首页 > 解决方案 > 如何在 django admin 中更改只读项的标签/标题

问题描述

我只想找到一个关于如何在 Django admin 中更改只读项的标签/标题的答案。

当字段/表单不是只读时,这样做很容易:

class MyModelAdmin(admin.ModelAdmin):
    readonly_fields=(
        'field_ro_1', 
        'field_ro_2', 
    )
    
    def get_form(self, request, obj=None, change=False, **kwargs):
        form = super().get_form(request, obj, change=False, **kwargs)
        form.base_fields['field_xyz'].label = 'This is field XYZ'
        form.base_fields['field_ro_1'].label = 'This is field readonly 1' # this doesn't work for readonly form and causing an error
        return form

但是如何处理只读表单/字段?非常感谢您的提示。

标签: djangodjango-admin

解决方案


如果您的只读字段是模型上的字段...

对于已经是模型上的字段的字段,您可以像处理任何其他字段一样执行此操作。顺便说一句,比上面的方法更好的方法是使用 fieldsverbose_name属性:

class MyModel(models.Model):
    ...
    name = models.CharField(
        max_length=255,
        verbose_name="This will be the label"
    )

如果您的只读字段是一种方法...

您可以short_description在实际功能上设置属性

class MyModel(models.Model):

    def my_readonly_field(self):
        return "something"
    
    my_readonly_field. short_description = "This will be the label"
class MyModelAdmin(models.Model):
    readonly_fields = ("name", "my_readonly_field", "my_other_readonly_field")

    def my_other_readonly_field(self, obj):
        return "something else"

    my_other_readonly_field.short_description = "Label goes here"

您可以在文档中阅读更多信息


推荐阅读