Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DateTime字段在通过表单传递空值时显示无效格式错误_Django_Django Models_Django Forms - Fatal编程技术网

Django 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

我试图提交表单,但将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.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
)