django - 多个模型的内联

时间:2014-04-10 14:32:21

标签: python django django-models inline

我有内联:

class GenderInline(admin.StackedInline):
    model = models.GenderModel1
    extra = 0

我想在不同的管理表单中使用此内联。

一旦我想要他的模型将是models.GenderModel1,并且一旦models.GenderModel2(根据AdminForm这个内联是相关的)

我能这样做吗?或者唯一的方法是复制内联? (我不喜欢......我需要复制10个内联..):

class GenderInline1(admin.StackedInline):
    model = models.GenderModel1
    extra = 0

class GenderInline2(admin.StackedInline):
    model = models.GenderModel2
    extra = 0

1 个答案:

答案 0 :(得分:3)

实际上,您可以使用type动态创建类,以避免定义multipl类。定义一个包含内联的函数,如下所示:

def get_inline_by_model(m):
    return type(
        'DynamicInline', 
        (admin.StackedInline, ), 
        {'model':m, 'extra':0} 
    )

然后在您的Admin类中,您可以定义内联,如:

inlines = ( get_inline_by_model (models.GenderModel1 ) ,  ) 
相关问题