2010-09-13 64 views
2

嗨,我对Django相当陌生,我正在寻找动态编辑管理类变量(完整的想法是隐藏内联添加和只显示编辑,但我蒸馏这里的问题)。Django modelAdmin __init__和inline

有人能解释为什么这不起作用吗?

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 = []它正确地示出了行内的断言(断言假,self.inlines),但内联仍然出现?尽管我已经清空了清单。

帮助赞赏! 谢谢。

回答

9

ModelAdmin s __init__方法creates instances of the inline admin classes并将它们添加到self.inline_instances。因此,将self.inlines设置为另一个值后不会改变任何内容。你应该找到this post,处理类似的问题很有帮助!

__init__中设置类似的值也没有意义,因为Modeladmin实例只创建一次,可能会持续多于一个请求!

+0

辉煌,正是我在找的= =] – hcliff 2010-09-15 16:40:35

1

我会建议制作一个自定义模板,当操作是“创建新的foo”时隐藏内联。

管理员模板非常容易覆盖全局或每个对象。这比在__init__()中重写ModelAdmin方法和属性要好得多。