#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:
В вашем проекте
- удалите
migrations
папку - Создайте новую папку миграции и создайте
__init__.py
в ней пустой файл. - беги
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 мигрируй`. Это решит вашу проблему, чтобы избавиться от стола.