我有一个Django模型, created_on
字段设置为 editable=False
. 这是正确的行为,因为我还根据文档设置了 auto_now=True
:
“按照当前的实现,将auto_now或auto_now_add设置为True将导致该字段具有editable = False和blank = True设置 . ”
使用管理员,您可以在 ModelAdmin
中将您设置为 editable=False
的任何字段定义为 readonly_fields
,一切都将按预期工作(即字段将显示在表单中,但它们将显示为灰色) .
但是,当在应用程序中使用ModelFormSet(即不是管理员)时,我无法弄清楚如何在表单中显示 created_on
字段 . 根据文件:
“Django应用以下规则:如果在模型字段上设置editable = False,则通过ModelForm从模型创建的任何表单都不会包含该字段 . ”
有人知道一种覆盖/规避这种行为的方法吗?
我宁愿不设置 editable=True
因为它是我想要维持在最基本级别的约束 . 如果我使用 auto_now=True
,我可能无法将其设置为 True
.
1 回答
经过几个小时的寻找解决方案后,我终于明白了 . 可以通过以下方式获取和填充具有editable = false的字段的数据:
将字段定义添加到ModelForm类
添加
__init__
方法,该方法实例化字段的值添加将字段添加到ModelForm类的Class Meta定义中的字段元组
例如: