我正在构建 django 测验应用程序,所有数据(问题/答案)都应通过 REST 服务提供。 我将使用 tastypie 来实现此目的。
我想到的是完美的结果 JSON,它可能看起来像(单个问题和答案):
{
"level": 1,
"question": "Example question",
"choices":[
{
"content":"Example answer 1",
"valid": true
},
{
"content":"Example answer 2",
"valid": false
},
{
"content":"Example answer 3",
"valid": false
},
{
"content":"Example answer 4",
"valid": false
}
]
},
单个问题始终包含 4 个答案,其中一个或多个答案有效。
我不知道应该如何为这种模式设计 django 模型。
我应该使用问题外键创建“答案”模型吗?在这种情况下,也许其他解决方案会更好? 如果是这样,我如何使用 django admin/web 表单轻松添加新问题?
有什么想法或建议吗?
最佳答案
我过去使用过的模型结构如下:
class Questionnaire(models.Model):
version = models.CharField()
class Question(models.Model):
questionnaire = models.ForeignKey(Questionnaire)
text = models.CharField()
class QuestionAnswer(models.Model):
question = models.ForeignKey(Question)
text = models.CharField()
is_valid = models.BooleanField()
class UserAnswer(models.Model):
answer = models.ForeignKey(QuestionAnswer)
此解决方案允许您设计多个问卷/测验,每个问卷/测验都有不同数量的问题。然后每个问题都有不同数量的答案,您可以选择有效的数量。
这种设计的最大问题是它并不真正有利于部分问卷/测验的完成。如果这是一个破坏者,您可以按如下方式调整 UserAnswer 类:
class UserQuestionnaire(models.Model):
questionnaire = models.ForeignKey(Questionnaire)
completed = models.BooleanField()
class UserAnswer(models.Model):
answer = models.ForeignKey(QuestionAnswer)
user_questionnaire = models.ForeignKey(UserQuestionnaire)
这会稍微破坏正常化,但允许您设置一个标志来判断接受者是否完成。
希望这可以帮助您入门!
关于Django测验应用程序,REST,如何设计模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936287/