Как добавить еще одно поле в модель, не получив ошибку?

Я добавил в модель 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

Согласно этому ответу вы должны убедиться, что вы:

  1. Добавьте ваше приложение в INSTALLED_APPS внутри settings.py, иначе makemigrations не будет проверять изменения в ваших моделях
  2. .
  3. Запустите ./manage.py makemigrations <app_name>, если у вашего приложения еще нет модуля migrations (т.е. это будет миграция 0001_initial.py вашего приложения)

Если вы можете вычеркнуть эти два требования из вашего списка (т.е. вы делаете последующие изменения ваших моделей), то ./manage.py makemigrations без всяких <app_name> должен просто работать.

Вернуться на верх