在Django中发布后,默认表单字段为空

时间:2012-08-20 01:32:51

标签: django

型号:

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仅包含文本,尽管日期字段的默认值。如何正确设置默认值?

2 个答案:

答案 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

相关问题