首页 文章

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

提问于
浏览
0

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

我的第一个想法是使用内联formset来显示答案的字段 . 但是,如果我为 Answer 创建内联formset,表单只显示此超类的字段,而不是特定的子类答案类型 . 并且它不可能创建具有多种模型类型的内联formset . 这个功能可以吗?

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

1 回答

  • 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),
        ]
    

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

相关问题