我使用的是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,我很抱歉在我的问题中写错了。
答案 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以设置默认值- 迁移就知道了