我使用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
中恢复它。现在,由于不是空日期,所以一切正常,我可以继续进行第二次更新...所以第一次更新是我的瓶颈所在
1条答案
按热度按时间rsaldnfx1#
您可以从表单和模板中排除字段
date_updated
,因为您希望它是timezone.now()
。这样您就不必为它设置一个值,如None。您应该只保留form.instance.date_updated = timezone.now()
这一部分,它将做您想要的。