8

我正在自定义 django admin,我想更改我的字段的显示名称。我想答案就在这里,但我找不到。感谢 Meta 类,我已经更改了表名。我还订购了字段,收集它们,折叠它们......

4

3 回答 3

30

我正在寻找的是:

name = models.CharField(max_length=200, verbose_name="Nom")

无论如何感谢您的帮助!

于 2013-09-03T13:40:21.007 回答
8

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

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

form.base_fields['my_model_field_name'].disabled = True
于 2020-10-07T15:34:12.850 回答
6

查看 Field.label。看到这个:https ://docs.djangoproject.com/en/dev/ref/forms/fields/#label

基本上,它是

class MyForm(forms.Form):
    name = forms.CharField(label='My Name')

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

于 2013-08-29T16:34:06.483 回答