如何在 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
中阅读更多信息
我只想找到有关如何在 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
中阅读更多信息