如何处理 django 表单中的 'auto-now' 字段?

how to handle an 'auto-now' field in a django form?

在我的一个 django 模型中,我有一个这样的字段:

modified = models.DateTimeField(auto_now=True)

我想,在为这个模型创建 ModelForm 时,我可以跳过这个字段,Django 会自动填充它。

我的模型:

class FooForm(forms.ModelForm):
    class Meta:
        model = Foo
        fields = ['text', 'name', 'description'] # notice - modified field not included -
            # should not be shown to the user

但是,尽管它没有出现在表单中,但在提交时,在创建新对象时,我得到了一个异常:

IntegrityError at /url/ - null value in column "modified" violates not-null constraint

我怎样才能使这个工作?

您只需为该字段提供一个默认值。 这可以按如下方式完成:

from datetime import datetime
modified = models.DateTimeField(default=datetime.now)

在这种情况下,auto_now 字段不会自动填充。

您需要使用auto_add_now,所以字段定义如下所示:

modified = models.DateTimeField(auto_now_add=True)

然后,如果该字段未显示,django 将自动添加日期。