0

模型:

class Comment(models.Model):
    date = models.DateTimeField(default = datetime.datetime.now)
    text = models.TextField()

形式:

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment

在模板中,我只有“文本”字段。当我单击提交按钮时,form.data 中的 QueryDict 仅包含文本,尽管日期字段的默认值。如何正确设置默认值?

4

2 回答 2

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)
于 2012-08-20T01:44:10.467 回答
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

于 2012-08-20T13:43:48.760 回答