我有一个django应用程序,它使用django.contrib.admin
进行管理任务。
对于一个模型,我现在需要添加一个字段,该字段指示每行创建的代码部分。我正在使用readonly_fields
来阻止通过管理界面更改此值。
此字段中的默认值将告诉我该行是
但我需要更好的粒度。特别是我希望能够区分由不了解该字段的代码创建的行和通过管理界面创建的行。
我的ModelAdmin
类是否可以为readonly_fields
中提到的字段指定初始值?
答案 0 :(得分:1)
一种方法是,
def get_form(self, request, caja=None, **kwargs):
self.form = YourModelForm
form = super(YourModelAdmin, self).get_form(request, caja, **kwargs)
form.base_fields['field'].initial = your_initial_data
return form
答案 1 :(得分:0)
我找到了这个解决方案,似乎有效:
class Admin(ModelAdmin):
readonly_fields = ('created_by',)
def save_form(self, request, form, change):
r = super(Admin, self).save_form(request, form, change)
if not change:
assert r.created_by == CREATED_BY_UNKNOWN
r.created_by = CREATED_BY_ADMIN
return r
CREATED_BY_UNKNOWN
和CREATED_BY_ADMIN
是我的代码中其他位置定义的值。