模型文件包括:
class Foo(models.Model):
bar = models.DateTimeField()
夹具文件.json包括:
{
"model": "app.Foo",
"pk": "1",
"fields": {
"bar": "2018/4/20",
}
},
当我尝试添加带有"python manage.py loaddata"的fixture时,结果是:
django.core.serializers.base.DeserializationError: Problem installing fixture
'C:ProjectsTestProjectappfixturesfile.json': ['“2018/4/20” value has an
invalid format. It must be in Y
YYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.']: (app.Foo:pk=1) field_value was '2018/4/20'
所以我的问题是,如何将日期格式"YYYY/MM/DD"添加到我的模型文件中?
您使用DateTimeField(例如:class Foo(models.Model):
bar = models.DateField()
models.DateField
和models.DateTimeField
期望输入为pythondatetime
对象或ISO格式(使用"-"
分隔符,而不是"/"
分隔符(。这不是您可以轻易更改的内容,因为它也是用于在数据库中保存值的内容。所以你想要什么是不可能的。
我看到的唯一选项是编写自己的管理命令,该命令首先解析json fixture,将日期格式更改为ISO并保存到一个新文件,然后从自己的handle()
方法中调用loaddata
命令。
注意:相应的表单字段forms.DateField
是灵活的,可以接受各种输入格式,并允许您指定要使用的输入格式。事实上,如果您启用i18n
,那么它们将接受像2020/03/12
这样的国际输入格式。但这并不能真正帮助你使用loaddata
,因为它根本不使用表单。