繁体   English   中英

使用表格格式内联的模型时,readonly_fields函数在Django Admin中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM