gpt4 book ai didi

python - 多项选择题的 django 测验应用程序模型

转载 作者:行者123 更新时间:2023-11-28 20:15:04 28 4
gpt4 key购买 nike

我正在用 django 创建测验应用程序,我的 django 问题模型是这样的,

class Question(models.Model):
questions = models.CharField(max_length=50, unique=True)
choice1 = models.CharField(max_length=50, unique=True)
choice2 = models.CharField(max_length=50, unique=True)
choice3 = models.CharField(max_length=50, unique=True)
choice4 = models.CharField(max_length=50, unique=True)
correct_answer = models.CharField(max_length=50, unique=True)

这样好吗,或者将四个选项保存在 postgres 数组中,或者将选择保存在单独的表中。

最佳答案

对于正确规范化的关系数据库模式,您需要一个独特的 Choice 模型,在 Question 上有一个外键:

class Question(models.Model):
question = models.CharField(...)

class Choice(models.Model):
question = models.ForeignKey("Question", related_name="choices")
choice = modelsCharField("Choice", max_length=50)
position = models.IntegerField("position")

class Meta:
unique_together = [
# no duplicated choice per question
("question", "choice"),
# no duplicated position per question
("question", "position")
]
ordering = ("position",)

然后您可以使用 myquestion.choices.all() 获取问题的选择(并从选择获取问题> 使用 mychoice.question)。

请注意,这不会对一个问题的选项数量施加任何限制,甚至不会强制要求一个问题至少有一个相关选项。

除非您有非常令人信服的理由不这样做,否则在使用关系数据库时您需要一个正确规范化的模式(rdbms 不仅仅是 bitbucket,它们提供了很多有用的功能- 只要你有一个合适的架构,就是这样)。

关于python - 多项选择题的 django 测验应用程序模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47867760/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com