Django DateTime字段在通过表单传递空值时显示无效格式错误
我试图提交表单,但将datetime字段保留为空,这会导致显示datetime格式无效的错误 我的情态Django DateTime字段在通过表单传递空值时显示无效格式错误,django,django-models,django-forms,Django,Django Models,Django Forms,我试图提交表单,但将datetime字段保留为空,这会导致显示datetime格式无效的错误 我的情态 class lead(models.Model): assigned_to=models.CharField(max_length=15) ref=models.CharField(max_length=10,blank=True) lead_type=models.CharField(max_length=20) priority=models.CharFie
class lead(models.Model):
assigned_to=models.CharField(max_length=15)
ref=models.CharField(max_length=10,blank=True)
lead_type=models.CharField(max_length=20)
priority=models.CharField(max_length=20)
hot=models.CharField(max_length=20,blank=True)
source=models.CharField(max_length=20,blank=True)
mls_lead=models.CharField(max_length=20,blank=True)
auto_imported=models.CharField(max_length=20,blank=True)
inquiry_date=models.DateTimeField(blank=True,null=True)
lead_closed_date=models.DateTimeField(blank=True,null=True)
created_by=models.CharField(max_length=20,blank=True)
property_id=models.IntegerField(blank=True,null=True)
contact_id=models.IntegerField(blank=True,null=True)
很明显,我为datetime字段和表单指定了null true
我有
我的表格
当我尝试使用验证表单数据创建模型对象时,它会显示
django.core.exceptions.ValidationError: ["'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]
我创建对象的方法如下
if form.is_valid():
lead.objects.create(
assigned_to=form.cleaned_data['assigned_to'],
ref=form.cleaned_data['ref'],
lead_type=form.cleaned_data['lead_type'],
priority=form.cleaned_data['priority'],
hot=form.cleaned_data['hot'],
source=form.cleaned_data['source'],
mls_lead=form.cleaned_data['mls_lead'],
auto_imported=form.cleaned_data['auto_imported'],
inquiry_date=form.cleaned_data['inquiry_date'],
lead_closed_date=form.cleaned_data['lead_closed_date'],
created_by=form.cleaned_data['created_by'],
property_id=form.cleaned_data['property_id'],
contact_id=form.cleaned_data['contact'])
对于Django的
DateTimeField
,空字符串与None
(或null)不同。我相信这种混淆来自于对空白字符串和None
的真值的类似评估
若要声明未引发任何错误,并且在需要时使用空值填充字段,请重新编写DateTimeField
填充类似于此行的行(从lead.objects.create
调用):
为此:
lead_closed_date=(
form.cleaned_data['lead_closed_date']
if form.cleaned_data['lead_closed_date']
else None
)
通过此更正,它将使用
表单填充lead\u closed\u date
的值。如果表单的真值为lead\u closed\u date']
,则cleaned\u data['lead\u closed\u date']
的值为True
,空字符串不是datetime字段的可接受值。您需要忽略它或将其设置为“无”。但我需要将其保留为空。如何操作?在数据库中,empty不是datetime类型的有效值。您可以选择将字段值设置为null,这在Python中相当于None。
lead_closed_date=form.cleaned_data['lead_closed_date']
lead_closed_date=(
form.cleaned_data['lead_closed_date']
if form.cleaned_data['lead_closed_date']
else None
)