django.core.exceptions.ValidationError:[“”值的日期格式无效。它必须为YYYY-MM-DD格式。“]

时间:2018-07-27 21:57:15

标签: django python-3.x django-models django-templates datefield

我使用的是Django 2.0.7版,并且尝试创建日期模块字段,直到遇到此错误为止:

Date = models.DateField(blank=True, default='', null=True, help_text='today date.')

我以前使用过此代码,并且可以正常工作,但是现在在我使用python manage.py makemigrations的{​​{1}}之后,我遇到了此错误。 完整日志:

python manage.py migrate

我什至尝试删除所有迁移和db并进行新的迁移,但是它也不起作用。 此链接也不适用于我: Resolving ValidationError: [u“'' value has an invalid date format. It must be in YYYY-MM-DD format.”] in Django 1.9.2?

对于Addision,我很抱歉在我的问题中写错了。

3 个答案:

答案 0 :(得分:0)

默认值不能为空字符串,因为它不是日期。 例如在模式页面中将date(1111, 11, 11)from datetime import date一起使用 那么如果您遇到相同的错误,则必须删除所有迁移,并擦除数据库数据,然后再次进行迁移

答案 1 :(得分:0)

import datetime

import pytz
from django.apps import AppConfig
from django.db.models.fields import DateTimeField
from django.utils.dateparse import parse_date
from django.core.exceptions import ValidationError

default_app_config = 'patch.PatchConfig'


def patch():
    def get_db_prep_value(self, value, connection, prepared=False):
        if isinstance(value, str):
            if not value:
                value = None
            elif not parse_date(value):
                try:
                    value = datetime.datetime.fromtimestamp(int(value)).replace(tzinfo=pytz.UTC)
                except:
                    raise ValidationError(
                        self.error_messages['invalid'],
                        code='invalid',
                        params={'value': value},
                    )
        if not prepared:
            value = self.get_prep_value(value)
        return connection.ops.adapt_datetimefield_value(value)

    DateTimeField.get_db_prep_value = get_db_prep_value


class PatchConfig(AppConfig):
    name = 'patch'

    def ready(self):
        patch()

您可能需要此补丁

答案 2 :(得分:0)

我更新模型时遇到相同的格式错误。

我向您展示我的场景,也许会有所帮助。所以我有一个现有的课程,想添加这一行:

time = models.TimeField()

比我做移民更重要的部分

Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value
for this column)
2) Quit, and let me add a default in models.py

选择1)并键入timezone.now以设置默认值- 迁移就知道了