创建处理多对多关系的嵌套表单

时间:2021-06-23 21:13:12

标签: python django django-forms

我的模型结构如下:

class Survey(models.Model):
    name = models.CharField(max_length=64, unique=True)

    class Meta:
        permissions = (
            (
                "view_stats",
                _("Can see statistics on surveys"),
            ),
        )


class Question(models.Model):
    text = models.CharField(max_length=64, unique=True)
    multiple_choice = models.BooleanField(
        default=False, null=False, verbose_name=_("Multiple choice")
    )
    respondents_particulars = models.BooleanField(
        default=False, null=False, verbose_name=_("Respondents particulars")
    )


class SurveyQuestion(models.Model):
    survey = models.ForeignKey(Survey, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)


class Answer(models.Model):
    text = models.CharField(max_length=16, unique=True)


class QuestionAnswer(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    answer = models.ForeignKey(Answer, on_delete=models.CASCADE)

我不使用 ManyToManyField 来避免问题的关系答案不同步的问题,因为答案可以同时是多个问题的一部分,但这不是问题的重点。 现在,基于结构,我想简化添加调查的方式。在管理中,我必须创建调查对象,然后创建一些问题,使用 SurveyQuestion 将它们连接起来,添加问题的答案并以相同的方式连接它们。

如何创建表单,让我可以创建调查,并可以为现有调查选择问题,并为调查添加(多个)新问题以及现有答案、新答案或同时添加两者。

我想我应该使用 ModelFormsformsets 但我不知道如何正确链接它们以获得预期的效果,即为 {{1} 的每个位置创建子表单集} 表单集。

0 个答案:

没有答案
相关问题