Ошибка проверки миграции поля даты / времени django - PullRequest
0 голосов
/ 17 мая 2018

Я не смог понять, как делать то, что я хочу (не нужно устанавливать дату и время при создании объекта) и обойти эту ошибку.

Django 1.11, Python 3.6.В настоящее время я нахожусь в процессе обновления с Django 1.8.

Проблема возникает, когда я запускаю python manage.py migrate

  File "C:\Dev\Python36\lib\site-packages\django\db\models\fields
  \__init__.py", line 1423, in to_python
  params={'value': value},
  django.core.exceptions.ValidationError: ["Value '' has an invalid date 
  format. Must be in the format YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]."]

Мой предыдущий models.py (в Django 1.8)

    timeToServe = models.DateTimeField(default='', null=True, blank=True,
                                   verbose_name=get_lang(None, 'time_to_serve'))

Мой текущий файл models.py (в Django 1.11)

timeToServe = models.DateTimeField(default=None,
    null=True, blank=True,
    auto_now=False, auto_now_add=False,
    verbose_name=get_lang(None, 'time_to_serve'))

Мой предыдущий файл миграции (в Django 1.8)

('timeToServe', models.DateTimeField(default='', blank=True, verbose_name='Serveringstid', null=True)),

Моя текущая миграция (0021_auto_xxxx.py) (In Django 1.11)

    operations = [
    migrations.AlterField(
        model_name='booking',
        name='timeToServe',
        field=models.DateTimeField(
            default=None, blank=True, null=True, verbose_name='time'),
    ),

1 Ответ

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

Кажется, нет автоматического решения для этого. То, что я сделал, чтобы обойти эту проблему, было:

  1. Проверьте, какие изменения в созданном файле миграции действительно приведут к изменениям базы данных В моем случае их было несколько, и мне удалось отредактировать файл миграции, чтобы отразить эти изменения, и удалить все другие изменения в файле миграции. Затем меня оставили с изменениями, которые Django хотел сделать, но не изменил базу данных.
  2. На следующем шаге я удалил миграции. Обратите внимание на поддельный флаг.

    python manage.py migrate - поддельный myAppName ноль

  3. Я удалил все текущие миграционные файлы и соответствующий им .pyc-файл

  4. Созданы новые файлы миграции

    Python manage.py makemigrations

  5. Я установил новый файл миграции. Обратите внимание на поддельный флаг.

    python manage.py migrate --fake-initial

Чтобы проверить статус ваших миграций, вы можете запустить

  • python manage.py showmigrations
...