我的日期字段为editable=False
。
该字段在创建时填充datetime.now()
。
由于管理员不会显示editable=False
字段,因此我创建了自定义管理员。
自定义管理员使用包含此字段的表单:
date = forms.DateTimeField(widget=widgets.AdminSplitDateTime, required=False)
我想要实现的目标是:
editable=False
)required=False
)我未能实现(3)。我创建了一个条目,当我查看数据库时,我发现它有一个有效的日期。但是当我从管理面板打开它时,日期小部件是空的。
如何使日期小部件显示该字段的当前值?
答案 0 :(得分:2)
首先,models.DateTimeField
默认情况下在管理员中使用widgets.AdminSplitDateTime
,您无需明确指定。
对于普通员工,请使用readonly_fields
来阻止更改日期字段。
对于管理员,渲染其他更改表单以允许修改日期字段。在Django 1.4中,可以通过覆盖ModelAdmin.get_readonly_fields()
:
class YourModelAdmin(admin.ModelAdmin):
def get_readonly_fields(self, request, obj=None):
# we don't use self.readonly_fields anymore
if request.user.is_superuser:
return ()
return ['date']