Python 如何创建一个;问答游戏;具有未知数量选项且有一个或多个正确答案的模型?
我正在尝试做一个“问题/测验”的模型。一个问题可以有用户想要的任意多个选项(字符域),并且可以有一个或多个正确答案(在这些选项中)。我应该如何定义这个模型? 问题:一些长的描述Python 如何创建一个;问答游戏;具有未知数量选项且有一个或多个正确答案的模型?,python,django,django-models,Python,Django,Django Models,我正在尝试做一个“问题/测验”的模型。一个问题可以有用户想要的任意多个选项(字符域),并且可以有一个或多个正确答案(在这些选项中)。我应该如何定义这个模型? 问题:一些长的描述 选择1 选择2 选择3-正确答案 选择4-正确的Ans 到目前为止,我提出了这个,但我认为这是一个糟糕的设计: class Question(models.Model): description = models.CharField('Description', max_length=300) co
- 选择1
- 选择2
- 选择3-正确答案
- 选择4-正确的Ans
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())
正如所指出的,您应该为您的答案提供正确的标志。此外,给他们一个fk to问题
似乎更明智,因为多个问题符合相同的答案是很奇怪的。这样一来,一个答案总是属于一个问题:
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)
正如所指出的,您应该为您的答案提供正确的标志。此外,给他们一个fk to问题
似乎更明智,因为多个问题符合相同的答案是很奇怪的。这样一来,一个答案总是属于一个问题:
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)
我想你会有这样一个数据模型:测验有一对多的问题,问题有一对多的答案(其中多个答案是正确的) 所以我会做一些类似的事情:
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)
然后,大部分细节将基于您如何查询以构建“调查”/“测验”并对其进行评分。我认为您会有这样一个数据模型:测验有一对多的问题,而问题有一对多的答案(其中多个答案是正确的) 所以我会做一些类似的事情:
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)
然后,大部分详细信息将基于您如何查询以构建“调查”/测验并对其评分。如果您有多个正确答案,
Answer
应该有一个correct
-flag。如果您有多个正确答案,Answer
应该有一个correct
-flag。当我设置上述内容并尝试迁移时,它告诉我,“不可空字段'question'在没有默认值的情况下回答”当我设置上述内容并尝试迁移时,它告诉我,“不可空字段'question'在没有默认值的情况下回答”