如何在 django admin 中更改只读项的标签/标题

How to change label / caption of readonly item in django admin

我只想找到有关如何在 Django 管理中更改只读项的标签/标题的答案。

如果字段/表单不是只读的,那么很容易做到:

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

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

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

对于已经是您模型中的字段的字段,您可以像对待任何其他字段一样进行操作。顺便说一句,比上面的方法更好的方法是使用字段 verbose_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"

您可以在 docs

中阅读更多信息