[英]readonly_fields function doesn't work in Django Admin with models tabularly inlined
当我将单个模型使用readonly_fields
函数时,该函数可以正常使用,但对于tabularly inlined
模型则tabularly inlined
。
当我们处理在admin
页面上彼此内联的模型时,有人可以帮助理解如何将字段标记为只读吗?
谢谢。
如果您只想在内联中设置一个只读字段,则可以执行以下操作:
class SomethingInline(admin.TabularInline):
model = Something
extra = 0
readonly_fields = ('field1',)
如果要使整个内联表单集在父表单上为只读,则可以尝试以下操作:
class SomethingInline(admin.TabularInline):
model = Something
extra = 0
# Set all your fields here:
readonly_fields = ('field1', 'field2', 'field3')
# Or instead return all your fields here if this should be conditional:
def get_readonly_fields(self, request, obj=None):
return ('field1', 'field2', 'field3')
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
在上一个示例中,它将仍然呈现现有嵌入式项目的所有值,但是您不能从界面添加/编辑/删除。 这实际上会使整个表单集变为只读。
注意:我没有重写has_change_permission()
以返回False
,因为这将阻止显示现有项目。
如果您不想手动指定所有字段,请通过以下一种解决方案实现get_readonly_fields()
: Django admin-将所有字段设置为只读
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.