如何在Django的DateField中插入NULL?

时间:2013-12-16 06:30:59

标签: django datepicker datefield

我的django模型中有一个可选的日期字段:

award_grant_date = models.DateField(null=True, blank=True)

当用户将日期字段留空时,会在DateField中插入NULL,否则会插入日期。

但是,如果用户确实在DateField中输入了日期,并且用户在表单中选择了其他一些特定数据,那么我想在DateField中插入NULL。

所以,在我的表格中,我有以下代码:

    class AwardGrantDetailsForm(forms.Form):
    ...
    award_grant_date = forms.DateField(
    widget=forms.DateInput(attrs={'id':'id_award_grant_date'}),
    input_formats=settings.DATE_INPUT_FORMATS,
    label=_('Date'),
    required=False)
    ...
    elif cd_agdf['award_grant_type'] == 8888 or cd_agdf['award_grant_type'] == 9999:

        self.cleaned_data['award_grant_type_description'] = ''
        self.cleaned_data['award_grant_date'] = 'NULL' //this is the issue here! 

我得到的错误是:

[u"'NULL' value has an invalid date format. It must be in YYYY-MM-DD format."]

我似乎无法正确地将语法输入到award_grant_date日期字段中。

我正在使用bootstrap datepicker和django 1.4。

如何编写代码self.cleaned_data ['award_grant_date'] =''插入所需的NULL?我已将models字段设置为null = True,blank = True!

2 个答案:

答案 0 :(得分:8)

数据库null的Python表示形式为None

self.cleaned_data['award_grant_date'] = None

答案 1 :(得分:2)

NULL value has an invalid date format. It must be in YYYY-MM-DD format

如果要将Null值存储到模型中,请使用 model_field = None

解决方案:

registration_date = request.POST.get('registration_date')

if not registration_date:
    registration_date = None

#StudentInfo is my model
student = StudentInfo(name=request.POST.get('name'), std=request.POST.get('std'), registration_date=registration_date)

#Now you can save your model data
student.save()