Py学习  »  Angela  »  全部回复
回复总数  1
6 年前
回复了 Angela 创建的主题 » Django唯一性和关系约束

因为你提到学生需要选择问题的答案,我认为你需要一个问题选项/选择的模型。然后,您可以在(学生,问题)上用Uniquetogether建模您的学生响应模型。

class Question(models.Model):
    question_text = models.CharField()
    options = models.ManyToManyField(QuestionOption)

class QuestionOption(models.Model):
    option_text = models.CharField(max_length=255)

class Student(models.Model):
    name = models.CharField()

class StudentResponse(models.Model):
    student = models.ForeignKey(Student)
    question = models.ForeignKey(Question)
    response_option = models.ForeignKey(QuestionOption)

    class Meta:
        unique_together = ("student", "question")

如果每个问题都需要有独特的选择,那么这是另一种方法。这和 polls app tutorial 在Django文档中。

class Question(models.Model):
    question = models.CharField(...)

class QuestionOption(models.Model):
    question = models.ForeignKey("Question",related_name="qs_options")
    option = models.CharField(max_length=200)

    class Meta:
       # ensuring choices are not duplicated for a question.
       unique_together = ("question", "option")