Джанго — После удаления таблицы из models.py и миграции, которые я получаю, «отношение » не существует»

#python #django

Вопрос:

Поэтому я понял, что могу просто удалить таблицу и добавить ее в качестве множества связей с другой моделью, и я удалил создание таблицы из файлов миграции в папке. Но по какой-то причине я получаю сообщение об ошибке ниже, когда звоню python manage.py migrate

 django.db.utils.ProgrammingError: relation "<table name>" does not exist
 

Как правильно удалять таблицы и / или добавлять атрибуты в модели в моделях.py, не вызывая ошибок при запуске python manage.py migrate ?

Комментарии:

1. Не связывайтесь с файлами миграции, если вы не знаете, что делаете. Вы должны были просто удалить класс модели из своей models.py базы данных и позволить миграциям работать с базой данных.

Ответ №1:

В вашем проекте

  1. удалите migrations папку
  2. Создайте новую папку миграции и создайте __init__.py в ней пустой файл.
  3. беги python manage.py makemigrations и python manage.py migrate

Сделав это, Django создаст новые миграции для вашего проекта.

Комментарии:

1. есть ли какие-либо недостатки в удалении ваших миграций? Это плохая практика?

2. Не удаляйте свои миграции. Потому что удаление ваших миграций не приводит к удалению таблиц, созданных ими в вашей базе данных. Если вы удалите их, вы получите сообщение об ошибке table <table_name> already exist . Вместо этого запишите удаленный create_model запрос в свой файл миграции, используя этот документ, https://docs.djangoproject.com/en/3.2/howto/writing-migrations/ . После этого удалите код таблицы models.py и запустите python manage.py makemigrations and then python manage.py мигрируй`. Это решит вашу проблему, чтобы избавиться от стола.