django - 一个内联用于多个模型
我有一个内联组件:
class GenderInline(admin.StackedInline):
model = models.GenderModel1
extra = 0
我想在不同的管理表单中使用这个内联组件。
有时候我希望它的模型是 models.GenderModel1,有时候是 models.GenderModel2(这取决于这个内联组件相关的管理表单)。
我可以这样做吗?还是说唯一的办法就是复制这个内联组件?(我不太想这样做... 我需要复制10个内联组件...):
class GenderInline1(admin.StackedInline):
model = models.GenderModel1
extra = 0
class GenderInline2(admin.StackedInline):
model = models.GenderModel2
extra = 0
1 个回答
3
其实,你可以使用 type
动态创建类,这样就不用定义很多个类了。你可以定义一个函数,像这样创建一个类:
def get_inline_by_model(m): return type( 'DynamicInline', (admin.StackedInline, ), {'model':m, 'extra':0} )
然后在你的 Admin 类里,你只需要这样定义你的类:
inlines = ( get_inline_by_model (models.GenderModel1 ) , )