Не могу добавить новое поле в модель Django - PullRequest
0 голосов
/ 06 мая 2018

Джанго 2.0

Я создал модель в Blog app,

class Category(models.Model):
    field1 = models....
    field2 = models....
    field3 = models....

и через некоторое время я хочу добавить новое поле в эту модель.

class Category(models.Model):
    field1 = models....
    cover_pic = .models....
    field2 = models....
    field3 = models....

Я следовал за этим ответом. Но это дает мне следующую ошибку.

django.db.utils.OperationalError: (1054, "Unknown column 'blog_category.cover_pic' in 'field list'")

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Если ваша проблема еще не решена и у вас нет важных данных в вашей базе данных, я бы посоветовал запустить вашу базу данных с нуля. Удалите все таблицы базы данных, затем удалите все файлы миграции в папках app_name/migration. Теперь запустите две команды и начните разработку.

python manage.py makemigrations
python manage.py migrate

Теперь у вас будет свежая база данных, и вы готовы к работе. В следующий раз попробуйте следовать пути, указанному в комментарии выше.

0 голосов
/ 06 мая 2018

Ответ от 2014 года и для старой версии Django.

Процесс добавления новых полей прост:

  1. Введите код для поля в вашей модели.
  2. Команда запуска manage.py makemigrations.
  3. Команда запуска manage.py migrate.

Это все в документации.


Поскольку вы уже следовали этому ответу и выполнили команду manage.py --fake, вы немного испортили свое состояние базы данных.

Чтобы восстановить, сделайте это:

  1. Перейдите в папку «миграции» вашего приложения «блог».
  2. Посмотрите на имена файлов миграции. Они должны выглядеть как 0001_category_field1.py, 0002_category_cover_pic.py.
  3. Фальсифицированная миграция будет с именем, похожим на 0002_category_cover_pic.py. Запишите его номер, например 0002.
  4. Теперь вам нужно вернуться к ранее примененной миграции. Таким образом, если фиктивный номер миграции равен 0002, ранее примененная миграция будет 0001.
  5. Теперь запустите эту команду - manage.py --fake myapp 0001. Обратите внимание на номер файла миграции. Вам придется подделать другую миграцию обратно ранее примененный файл миграции.
  6. Теперь запустите команду - manage.py migrate myapp.

Это должно исправить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...