嘿,我是Django的新手,我正在寻找动态编辑管理类变量(完整的想法是隐藏添加的内联,只显示编辑,但我在这里提炼问题)。
有人可以解释为什么这不起作用吗?
class dbTablePermissionInline(admin.TabularInline):
model = dbPermission
class adminDbTable(admin.ModelAdmin):
inlines = [
dbTablePermissionInline,
]
def __init__(self, *args, **kwargs):
super(adminDbTable,self).__init__(*args, **kwargs)
self.inlines = []
当我在self.inlines = []之上抛出一个断言(断言False,self.inlines)时,它正确地显示了内联,但内联仍然出现?即使我把清单清空了。
帮助赞赏! 感谢。
答案 0 :(得分:11)
ModelAdmin
__init__
方法creates instances of the inline admin classes并将其添加到self.inline_instances
。因此,之后将self.inlines
设置为其他值不会改变任何内容。您应该找到处理类似问题的this post非常有用!
在__init__
中设置这样的值也没有意义,因为Modeladmin实例只创建一次并且可能会持续多次请求!
答案 1 :(得分:1)
我建议制作一个自定义模板,当操作是“创建新foo”时隐藏内联。
管理模板很容易覆盖全局或每个对象。它比覆盖__init__()
中的ModelAdmin方法和属性要好得多。