我想在调查/测试中显示一个表单来回答多种类型的问题(有点像Google表单)。我的模型设置为我有Test
模型,Answer
模型,其中包含Test
的外键和Answer
的子类(例如多项选择,简短的答案)与该问题类型的必要额外字段。
我的第一个想法是使用内联formset来显示答案的字段。但是,如果我为Answer
创建内联表单集,则表单仅显示此超类的字段,而不是特定子类答案类型的字段。并且它(根据我的搜索)不会出现创建具有多种模型类型的内联formset的可能性。这个功能可以吗?
(在我看来,基本上可以通过为每个Answer
创建单独表单列表来手动滚动表单集,但这似乎不是一个非常优雅的解决方案。)< / p>
答案 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),
]
以这种方式,您可以为多个模型使用相同的内联形式