显示模型内部的关系

时间:2017-02-08 10:33:33

标签: python django

这是我的MCQ应用的模型。有没有办法在这个特定模型中显示answer属于其中一个选项的关系,并且应该只有一个正确的选项

class Question(models.Model):
  quiz_question=models.CharField(max_length=1000)
  option1=models.CharField(max_length=500)
  option2=models.CharField(max_length=500)  
  option3=models.CharField(max_length=500)
  option4=models.CharField(max_length=500)
  option5=models.CharField(max_length=500)
  answer=models.CharField(max_length=500)

谢谢。

1 个答案:

答案 0 :(得分:1)

总是5个选项

添加指向正确选项的另一个字段。例如,您可以使用具有以下选项的ChoiceField:

(1, 'option1')
(2, 'option2')
(3, 'option3')
(4, 'option4')
(5, 'option5')

当总有这5个选项时,这个解决方案没问题。

免费的期权数量

在这种情况下,不要将选项指定为不同的字段,而是使用ManyToManyFields和ForeignKeyFields:

class Option(Model):
    text = TextField(unique=True)

class Question(Model):
    quiz_question = TextField(null=False, blank=False)
    answer = TextField()
    options = ManyToManyField(Option)
    selected_option = ForeignKeyField(Option)

添加验证器或clean_selected_option方法,以控制所选选项是options之一。

或者使用包含附加列through的{​​{1}}模型:

selected