如何创建一个测验"具有一个或多个正确答案的未知选项数量的模型?

时间:2017-12-19 19:31:26

标签: python django django-models

我正在尝试制作一个"问题/测验" 。一个问题可以有多个用户想要的选择(Charfields),并且可以有一个或多个正确的答案(在这些选项中)。我该如何定义这个模型?

问题:一些长篇描述。

  • 选择1
  • 选择2
  • 选择3 - 纠正答案
  • 选择4 - 纠正答案

到目前为止,我想出了这个,但我认为这是一个糟糕的设计:

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())

2 个答案:

答案 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)

然后,大多数细节将基于您如何查询以构建“调查”/测验并对其进行评分。