Django内联formset与模型子类(或只是多个模型)

时间:2014-07-22 14:34:52

标签: django forms django-forms

我想在调查/测试中显示一个表单来回答多种类型的问题(有点像Google表单)。我的模型设置为我有Test模型,Answer模型,其中包含Test的外键和Answer的子类(例如多项选择,简短的答案)与该问题类型的必要额外字段。

我的第一个想法是使用内联formset来显示答案的字段。但是,如果我为Answer创建内联表单集,则表单仅显示此超类的字段,而不是特定子类答案类型的字段。并且它(根据我的搜索)不会出现创建具有多种模型类型的内联formset的可能性。这个功能可以吗?

(在我看来,基本上可以通过为每个Answer创建单独表单列表来手动滚动表单集,但这似乎不是一个非常优雅的解决方案。)< / p>

1 个答案:

答案 0 :(得分:0)

如果我理解正确:您可以为每个模型创建动态内联:

def get_inline_by_model(m):
    return type(
        'YourInline', 
        (admin.StackedInline, ), 
        {'model' : m, 'extra' : 0,'form' : YourAdminForm,'max_num' : 1,'fields' :('key','value')} 
    ) 

并在您的管理模式中:

inlines = [
        get__inline_by_model(models.YourModel),
    ]

以这种方式,您可以为多个模型使用相同的内联形式