我正在自定义django admin,我想更改字段的显示名称。 我认为答案是here,但我找不到。 由于Meta类,我已经更改了表名。我还订购了田地,收集了它们,折叠了它们......
答案 0 :(得分:25)
我在寻找的是:
name = models.CharField(max_length=200, verbose_name="Nom")
非常感谢您的帮助!
答案 1 :(得分:4)
看看Field.label。 请参阅:https://docs.djangoproject.com/en/dev/ref/forms/fields/#label
基本上,它是
class MyForm(forms.Form):
name = forms.CharField(label='My Name')
但这需要扩展管理员,这可能比你想做的更多。
答案 2 :(得分:2)
可以像在accepted answer中那样在模型字段上设置verbose_name
,但有一些缺点:
这也会影响评论中提到的非管理员形式的字段标签
它会更改模型字段的定义,因此会导致新的迁移
如果仅 要更改 admin 网站上的字段的显示名称,则可以按照this other answer中的建议覆盖整个表单。 ,或者只需扩展ModelAdmin.get_form()
来修改表单字段标签,如下例所示:
class MyModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, change=False, **kwargs):
form = super().get_form(request, obj, change, **kwargs)
form.base_fields['my_model_field_name'].label = 'new name'
return form
请注意,如果该字段位于readonly_fields
中(至少在Django 2.2.16中),则此方法不起作用,因为该字段将被排除在form.base_fields
之外(请参见source)。在这种情况下,一种选择是通过在readonly_fields
内添加另一行来从get_form()
中删除该字段并禁用它:
form.base_fields['my_model_field_name'].disabled = True