Как добавить еще одно поле в модель, не получив ошибку?
Я добавил в модель Listing()
еще одно поле под названием highest_bid
. Однако, когда я пытаюсь просмотреть модель листинга на странице /admin
, я получаю OperationalError
:
no such column: auctions_listing.highest_bid
После добавления этого поля я попробовал использовать makemigrations
, но он сказал, что нет изменений, и я также попробовал использовать migrate
, но он также сказал, что нечего переносить.
Я также попробовал удалить null=True
на поле, но это ничего не изменило.
Как добавить это поле, не получив ошибку?
models.py:
class Listing(models.Model):
...
highest_bid = models.FloatField()
# highest_bid = models.FloatField(null=True)
# they both returned the same error
как makemigrations
не добавил изменения, вам нужно найти способ реализовать make migrations и создать файл в папке migrations иначе вашего поля не будет в БД и вы будете продолжать видеть ту же ошибку
так что попробуйте ./manage.py makemigrations your_app_name
Согласно этому ответу вы должны убедиться, что вы:
- Добавьте ваше приложение в
INSTALLED_APPS
внутриsettings.py
, иначеmakemigrations
не будет проверять изменения в ваших моделях .
- Запустите
./manage.py makemigrations <app_name>
, если у вашего приложения еще нет модуляmigrations
(т.е. это будет миграция0001_initial.py
вашего приложения)
Если вы можете вычеркнуть эти два требования из вашего списка (т.е. вы делаете последующие изменения ваших моделей), то ./manage.py makemigrations
без всяких <app_name>
должен просто работать.