【问题标题】:django datetimefield migration validation errordjango datetimefield 迁移验证错误
【发布时间】:2018-10-27 06:58:52
【问题描述】:

我无法弄清楚如何做我想做的事(不必在创建对象时设置日期时间)并解决此错误。

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'),
    ),

【问题讨论】:

  • 这个模型字段的先前版本是CharField,也许?
  • 字段以前不是 CharField。
  • timeToServe 模型是否存在任何对象?
  • 在迁移文件中,我们实际上可以看到migrations.AlterField,这意味着该字段有一些先前的参数,那么它们是什么?
  • 是的,数据库中有对象。

标签: django datetime migration field validationerror


【解决方案1】:

似乎没有自动解决方案。我为解决这个问题所做的是:

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

    python manage.py migrate --fake myAppName zero

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

  4. 创建了新的迁移文件

    Python manage.py makemigrations

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

    python manage.py migrate --fake-initial

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

  • python manage.py showmigrations

【讨论】:

    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 2021-01-09
    • 2016-04-15
    • 2018-09-03
    • 2016-04-27
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多