2016-09-17 3 views
1

Я работал с django 1.9 и добавил новое поле (creation_date) в myapp/models.py. После этого я запускаю «python manage.py makemigrations». Я получил:Модели Django, добавляющие новое значение, миграции

Please select a fix:

  1. Provide a one-off default now (will be set on all existing rows)
  2. Quit, and let me add a default in models.py."

Я выбираю 1-й вариант и добавленную стоимость в неправильном формате '10 .07.2016 '. После этой ошибки я не смог запустить «python manage.py migrate».

Поэтому я решил сменить models.py и добавить значение по умолчанию «datetime.now». Но после этого у меня все еще есть проблемы с «python manage.py makemigrations». Я вижу такие вещи:

django.core.exceptions.ValidationError: [u"'10.07.2016' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]

Как решить эту проблему?

+0

отредактируйте ваш вопрос, чтобы показать самую последнюю сгенерированную миграцию. Это можно устранить, отредактировав вручную. – e4c5

+0

Вам необходимо внести изменения в свои данные перед запуском второй миграции. Я предполагаю, что вы можете сделать objects.update (creation_date = timezone.now()), но если это не сработает, вы можете вручную сделать это через оболочку вашей базы данных. – SpiXel

ответ

1

Пока ваша миграция не применяется к базе данных, вы можете вручную обновить файл миграции, расположенный в myapp/migrations/*.py. Найдите строку '10 .07.2016 'и обновите ее до поддерживаемого формата.

Менее привлекательным решением было бы удалить старый файл миграции (если он не используется в базе данных) и создать новый файл миграции с python manage.py makemigrations. Поскольку вы обновили модель для использования значения по умолчанию, на этот раз он не будет запрашивать одноразовое значение по умолчанию.

Чтобы проверить, применяется ли миграция к запуску базы данных: python manage.py showmigrations.