如何在 django admin 上添加只读内联

新手上路,请多包涵

我正在使用 django 1.4 并且我有一个 many2many 字段,所以在创建管理站点时我想将这个字段添加为内联,这里是一些代码:

 class SummaryInline(admin.TabularInline):
    model = ParserError.summaries.through

class MyClassAdmin(admin.ModelAdmin):
    list_display = ('classifier', 'name', 'err_count', 'supported')
    fields = ('classifier', 'name', 'err_count', 'err_classifier', 'supported')
    inlines = (SummaryInline,)
    readonly_fields = ('classifier', 'err_count')

所以我的问题是,如何将内联字段设置为只读?

原文由 Hassek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 526
2 个回答

经过一段时间尝试找到我想出的名字感谢 这个答案,所以我检查了 self.opts.local_fields 的名称并找到了中间表的名称并将其添加到 readonly_fields ,设置 can_delete 为 False。

 class SummaryInline(admin.TabularInline):
    model = ParserError.summaries.through
    readonly_fields = ('myclasssummary',)
    can_delete = False

非常简单,但花了我一段时间,所以我发现将它添加到这里是个好主意。

原文由 Hassek 发布,翻译遵循 CC BY-SA 3.0 许可协议

此外,如果您不想添加/删除行,您可以添加这些定义。

 def has_add_permission(self, request, obj=None):
    return False

def has_delete_permission(self, request, obj=None):
    return False

原文由 Keval Prabhu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题