我正在自定义django admin,希望能够更改字段的显示名称。我认为答案在这里,但我找不到。我已经通过Meta类更改了表名,也对字段进行了排序、收集和折叠...
我想要的是:
name = models.CharField(max_length=200, verbose_name="Nom")
感谢你的帮助!无论如何都要感谢。
如接受回答中所述,在模型字段上设置 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
请注意,在 Django 2.2.16 中,如果字段在 readonly_fields
中,则此方法无效,因为该字段将从 form.base_fields
中排除(请参见 源代码)。在这种情况下,一种解决方法是从 readonly_fields
中移除该字段,并通过在 get_form()
中添加另一行来禁用它:
form.base_fields['my_model_field_name'].disabled = True
查看 Field.label。 请参见此链接:https://docs.djangoproject.com/en/dev/ref/forms/fields/#label
基本上,它是
class MyForm(forms.Form):
name = forms.CharField(label='My Name')