在django admin中更改字段名称

时间:2013-08-29 15:50:05

标签: database django django-models python-3.x django-admin

我正在自定义django admin,我想更改字段的显示名称。 我认为答案是here,但我找不到。 由于Meta类,我已经更改了表名。我还订购了田地,收集了它们,折叠了它们......

3 个答案:

答案 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