Django管理页面中的动态字段

时间:2020-07-16 15:02:54

标签: django admin survey

我正在尝试为我的应用的管理页面创建一个界面,在此页面上,在管理员输入时将新字段添加到模板中。为此,应该有一个选项“添加文本问题”或“添加数字问题”。之后,将出现类TextQuestion或numericQuestion,以便您可以构建一系列问题。 Django是否提供这种选项?不幸的是,我在浏览互联网时没有发现这种可能性。

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [

        ("General",             {'fields': ['question','question_type']}),
        ("Text Question",       {'fields': ['text_answer']}),
        ("Numerical Question",  {'fields': ['numerical_answer_lower','numerical_answer_upper']}),
        ("Scheduling",          {'fields': ['schedule']})

    ]
admin.site.register(M1_Question,QuestionAdmin)

1 个答案:

答案 0 :(得分:0)

这取决于型号。最少的努力就是:

模型Question

具有类似字段:

  • 类型(常规,文本,数字,日程安排):使用枚举的选择字段
  • 问卷:ForeignKey

在这种情况下,管理员列表视图将显示问题列表,通过“添加问题”按钮,您可以简单地添加新问题并选择其类型。

这些问题也可以具有一个保存问题列表的模型的外键,例如问卷。按照Django约定,调查表会自动获得一个反向关系作为属性:question_set

与管理内联的M2M关系

如果您希望调查表引用其问题(您没有在问题中添加足够的信息,因此这只是一个假设),则可以定义以下字段:

  • 问题:ManyToManyField(Question)

在这种情况下,您可以使用Admin Inlines来允许在“问卷”对象的详细信息视图上的问题列表中添加,编辑和删除。

相关问题