django datetimefield迁移验证错误

时间:2018-05-17 05:47:47

标签: django datetime migration field validationerror

我还没有弄清楚如何做我想做的事情(不必在创建对象时设置日期时间)并解决这个错误。

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)(在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 :(得分:0)

似乎并不能自动解决这个问题。我为解决这个问题所做的是:

  1. 检查创建的迁移文件中的哪些更改实际上会导致数据库更改。在我的情况下有一些,我设法编辑迁移文件以反映这些更改并删除迁移文件中的所有其他更改。然后我留下了Django想要做的更改,但不会更改数据库。
  2. 在下一步中,我卸载了迁移。注意假旗。

    python manage.py migrate --fake myAppName zero

  3. 我删除了所有当前的迁移文件以及相应的.pyc文件

  4. 创建了新的迁移文件

    Python manage.py makemigrations

  5. 我安装了新的迁移文件。注意假旗。

    python manage.py migrate --fake-initial

  6. 要检查迁移的状态,您可以运行

    • python manage.py showmigrations