型号:
class Comment(models.Model):
date = models.DateTimeField(default = datetime.datetime.now)
text = models.TextField()
形式:
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
在模板中我只有“text”字段。当我单击提交按钮时,form.data中的QueryDict仅包含文本,尽管日期字段的默认值。如何正确设置默认值?
答案 0 :(得分:1)
更新:
我认为default=datetime.date.now
表现得像auto_now_add=True
,因为您提到您的模板只包含text
字段。
事实证明您的情况没有任何不同,您必须在表单中显示date
字段。
如果您想忽略它,可以覆盖ModelForm.save
方法自行设置日期,或将其添加到模型save()
定义中。
您应该查看模型字段定义中的auto_now_add=True
参数,该参数会在第一次保存时自动添加将日期字段设置为datetime.datetime.now()
的行为。
date = models.DateTimeField(auto_now_add=True)
答案 1 :(得分:0)
你应该写
default = datetime.datetime.now()
用括号调用函数ang获取日期时间。有 auto_now 字段以更好的方式执行此操作。 https://docs.djangoproject.com/en/dev/ref/models/fields/#datefield
这是从视图提供初始数据的另一种方法:
form = CommentForm( initial = { 'date': datetime.datetime.now(), 'text': u'', }
详细了解https://docs.djangoproject.com/en/dev/ref/forms/fields/#initial