在django admin中更改字段名称

Hyd*_*Ura 5 database django django-models django-admin python-3.x

我正在定制django管理员,我想更改我的字段的显示名称.我认为答案就在这里,但我找不到.由于Meta类,我已经更改了表名.我还订购了田地,收集了它们,折叠了它们......

Hyd*_*Ura 25

我在寻找的是:

name = models.CharField(max_length=200, verbose_name="Nom")
Run Code Online (Sandbox Code Playgroud)

无论如何,谢谢你的帮助!

  • 值得注意的是,这也将改变所有非管理员表单中的标签(以及您使用verbose_name的任何其他地方). (6认同)

djv*_*jvg 7

verbose_name在模型字段上设置,如接受的答案,确实有效,但它有一些缺点:

  • 它也会影响非管理员表单中的字段标签,如评论中所述

  • 它更改了模型字段的定义,因此会导致新的迁移

如果你只是想改变的字段的显示名称管理的网站,你既可以覆盖整个表格,在提出这个其他答案,或者干脆通过扩展修改表单字段标签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
Run Code Online (Sandbox Code Playgroud)

请注意,如果该字段在readonly_fields(至少在 Django 2.2.16 中),则这不起作用,因为该字段将被排除form.base_fields(请参阅源代码)。在这种情况下,一个选择是readonly_fields通过在里面添加另一行来删除该字段并禁用它get_form()

form.base_fields['my_model_field_name'].disabled = True
Run Code Online (Sandbox Code Playgroud)


Rob*_*b L 6

看看 Field.label。请参阅:https : //docs.djangoproject.com/en/dev/ref/forms/fields/#label

基本上,它是

class MyForm(forms.Form):
    name = forms.CharField(label='My Name')
Run Code Online (Sandbox Code Playgroud)

但这需要扩展管理员,这可能比您想做的更多。