因为你提到学生需要选择问题的答案,我认为你需要一个问题选项/选择的模型。然后,您可以在(学生,问题)上用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")