【发布时间】:2012-01-18 14:31:53
【问题描述】:
我有一个相当简单的 Django 应用程序(Red Hat 上的 v1.3),我使用管理应用程序来创建和修改数据库记录。我的基础模型中的一个字段是日期字段。每次在管理员的新表单或编辑表单中显示相应字段时,我希望该字段的 initial 值为今天的日期(和时间)。如果她愿意,用户可以在之后选择修改它。
我知道我可以在我的模型定义中(即在 models.py 中)设置 default 字段值。首次创建数据库记录时效果很好。但是对于更改表单的后续调用,我分配给默认参数 (datetime.datetime.now) 的可调用对象显然不会被调用。
我已经很好地查看并尝试了 stackoverflow 中其他地方描述的所有许多提议的解决方案,但没有成功。其中大部分似乎都围绕着将初始化代码插入ModelForm 子类,例如要么是这样的......
class ConstantDefAdminForm(ModelForm) :
a_date_field = DateField(initial="datetime.datetime.now") # or now()
class Meta :
model = ConstantDef
widgets = {
...
}
或者类似的...
class ConstantDefAdminForm(ModelForm) :
class Meta :
model = ConstantDef
widgets = {
...
}
def __init__(self, ...) :
# some initialisation of a_date_field
super(ConstantDefAdminForm, self).__init__(...)
但是这些方法都不起作用。初始字段值始终设置为存储在数据库中的值。我对 Django 文档的阅读是,在表单中施加初始字段值的各种方法仅适用于 unbound 表单,而不适用于 bound 表单。对吧?
但是这种能力(选择性地覆盖当前存储的值)似乎是一个很受欢迎的要求,我相信一定有办法做到这一点。
有没有人成功做到这一点?
提前致谢,
菲尔
【问题讨论】:
标签: django django-admin