django - 如何在 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
但是如何处理只读表单/字段?非常感谢您的提示。
解决方案
如果您的只读字段是模型上的字段...
对于已经是模型上的字段的字段,您可以像处理任何其他字段一样执行此操作。顺便说一句,比上面的方法更好的方法是使用 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"
您可以在文档中阅读更多信息
推荐阅读
- swift - 为什么 NSPredicate 和 DateComponents 不起作用
- ios - 如何使用 Stripe API 确认 Apple Pay 付款
- node.js - nodejs 导入文件并原生使用函数
- node.js - 巨大的文件下载,我应该用什么来构建这个?
- java - 防止测试使用特定的弹簧配置文件运行
- javascript - 如果数据为特定大小,则在图例项的鼠标悬停时模糊/突出显示状态不会改变
- flutter - 在颤动中从另一个小部件更新小部件的状态
- recaptcha - reCaptcha V2 - 即使未勾选复选框,提交也有效
- java - 根据值调用正确的子类
- python - 是否可以将 QML 表视图连接到 python QAbstractModel 实例?