创建Django web应用程序以添加测验问题的逻辑

创建Django web应用程序以添加测验问题的逻辑,django,Django,我有一个使用django创建以下类型问题的现有web应用程序 MCQ 单答案问题 我想添加一个新类型的问题,它需要一个长的文本段落(如案例研究或阅读理解的段落),然后是基于这一段落的5-6个问题。这些问题可以是MCQ或单答案问题 我有mcqs和saqs(单答案问题)的现有代码,它实现了三种模型 一种mcq模型 saqs的第二个模型 问题类型的第三种模型(SAQ是以下三种类型中的一种——非常简短的回答、简短的回答和冗长的回答) 为了实现这种新的问题类型,我更愿意使用相同的mcq或saq模型

我有一个使用django创建以下类型问题的现有web应用程序

  • MCQ
  • 单答案问题
我想添加一个新类型的问题,它需要一个长的文本段落(如案例研究或阅读理解的段落),然后是基于这一段落的5-6个问题。这些问题可以是MCQ或单答案问题

我有mcqs和saqs(单答案问题)的现有代码,它实现了三种模型

  • 一种mcq模型
  • saqs的第二个模型
  • 问题类型的第三种模型(SAQ是以下三种类型中的一种——非常简短的回答、简短的回答和冗长的回答)
为了实现这种新的问题类型,我更愿意使用相同的mcq或saq模型


我不知道什么应该是好的和有效的逻辑。

组织问题的最直观和有效的方法是在一个包含所有问题的单一问题模型中。问题类型不应在模型级别进行管理,而应在字段(问题)级别进行管理

问题类型影响a)允许在数据库中存储什么类型的数据,以及b)如何向用户呈现响应。指定字段类型和属性都会影响这两种情况。如果需要,可以在forms.py文件中进一步调整渲染

例如,在models.py文件中:

class Questions(models.Model):
    
    # define choices for multiple choice questions

    question_one_choices = [
        ('0', _('Smaller 1x')),
        ('1', _('1-2x')),
        ('2', _('Larger 2x')),
    ]

    yes_no = [
        (True, _('Yes')),
        (False, _('No')),
    ]

    # multiple choice
    question_one = models.CharField(max_length=50, choices=question_one_choices)

    # multiple choice with only 2 options
    question_two = models.BooleanField(choices=yes_no)

    # text answer short
    question_three = models.CharField(max_length=50)

    # text answer long
    question_four = models.TextField()