我正在尝试制作一个"问题/测验" 。一个问题可以有多个用户想要的选择(Charfields),并且可以有一个或多个正确的答案(在这些选项中)。我该如何定义这个模型?
问题:一些长篇描述。
到目前为止,我想出了这个,但我认为这是一个糟糕的设计:
class Question(models.Model):
description = models.CharField('Description', max_length=300)
correct_answer_id = models.UUIDField('answer_id', null=True)
options = models.ManyToManyField(Answer)
class Answer(models.Model):
"""
Answer's Model, which is used as the answer in Question Model
"""
text = models.CharField(max_length=128, verbose_name=u'Answer\'s text')
ans_id = models.UUIDField(default=uuid.uuid1())
答案 0 :(得分:3)
正如Daniel所指出的那样,你应该用正确的旗帜提供答案。同样,给{f} Question
fk似乎更合理,因为符合相同答案的多个问题很奇怪。这样一个答案总是属于一个问题:
class Question(models.Model):
description = models.CharField('Description', max_length=300)
def correct_answers(self):
return self.answer_set.filter(correct=True)
# ...
class Answer(models.Model):
text = models.CharField(max_length=128)
question = models.ForeignKey(Question)
correct = models.BooleanField('Correct', default=False)
答案 1 :(得分:0)
我认为你有一个类似的数据模型:测验有一对多的问题,问题有一对多的答案(其中多个可以是正确的)。
所以我会这样做:
class Quiz(models.Model):
...
class Question(models.Model):
quiz = models.ForeignKey(Quiz)
...
class Answer(models.Model):
question = models.ForeignKey(Question)
text = ...
is_correct = models.BooleanField(default=False)
然后,大多数细节将基于您如何查询以构建“调查”/测验并对其进行评分。