Django:一个None DateInput没有通过表单验证,我该如何修复它?

lstz6jyr  于 2023-02-17  发布在  Go
关注(0)|答案(1)|浏览(100)

我使用UpdateView并创建了一个名为date_updated的字段。当用户创建时,例如,一个组,没有更新。在models.py中,我定义了:

date_updated = models.DateTimeField(null=True)

然后在forms.py中我创建了更新表单,例如,

class UpdateGroupForm(forms.ModelForm):

    class Meta:
        model = Group
        fields = ['name','date_updated']

在模板中,我调用我的表单,正如在迭代{% for field in form %}中所期望的那样,field.value = None用于特定字段date_updated,并且由于这个原因,我相信不会更新。

def form_valid(self, form):
        if form.instance.owner == self.request.user:
            form.instance.date_updated = timezone.now()
            return super().form_valid(form)
        else:
            return super().form_invalid(form)

我尝试用假日期替换空值,考虑到我的模板中的以下内容:

{% if field.name == 'date_updated' and field.value == None %}
 <input type="date" name="date_updated" value="2000-01-01" format="yyyy-mm-dd" required disabled>                      
{% else %}

但它也不起作用,我无法验证表单,也无法使用第一次更新来更新值。我该怎么办?唯一有效的方法是从forms.py中删除date_updated,执行第一次更新,然后在forms.py中恢复它。现在,由于不是空日期,所以一切正常,我可以继续进行第二次更新...所以第一次更新是我的瓶颈所在

rsaldnfx

rsaldnfx1#

您可以从表单和模板中排除字段date_updated,因为您希望它是timezone.now()。这样您就不必为它设置一个值,如None。您应该只保留form.instance.date_updated = timezone.now()这一部分,它将做您想要的。

相关问题