Python django管理员添加代表性id字段
我正在尝试向django管理员更改表单(视图)添加一个只读(代表性)id字段,例如,我有以下模型:Python django管理员添加代表性id字段,python,django,django-forms,django-admin,Python,Django,Django Forms,Django Admin,我正在尝试向django管理员更改表单(视图)添加一个只读(代表性)id字段,例如,我有以下模型: class Foo(models.Model): name = models.CharField(max_length=20) def display_id(self): # represent the AutoField (id) as "0001" return str(self.id).zfill(4) class FooAdminFo
class Foo(models.Model):
name = models.CharField(max_length=20)
def display_id(self):
# represent the AutoField (id) as "0001"
return str(self.id).zfill(4)
class FooAdminForm(forms.ModelForm):
display_id = forms.IntegerField(widget=ReadOnlyWidget)
class Meta:
model = Foo
class FooAdmin(admin.ModelAdmin):
form = FooAdminForm
fieldsets = (
(None, {'fields': ('name',)}),
('Extra info', {'fields': [
('display_id',),
]}),
)
这里有一些问题和禁忌:
- 表单上没有自动字段(这是有充分理由的),因此如何才能正确显示id
- 未保存的实例没有可依赖的id,我希望在添加新条目时显示“n/a”
- 我不想在我的模型中添加显示id字段
- 重写(模型)表单的init,但这会变得非常复杂
- 以某种方式在my
中修复此行为ReadOnlyWidget
- 只需使用常规的
而不是表单
,以避免数据/表单冲突模型表单
class FooAdmin(admin.ModelAdmin):
form = FooAdminForm
readonly_fields('id',)
fieldsets = (
(None, {'fields': ('name',)}),
('Extra info', {'fields': [
('display_id',),
]}),
)
这是行不通的,display_id是一个属性,“id”也是一个自动字段,因此它在ModelForm上不可用