首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在测验Django中保存用户进度

在测验Django中保存用户进度
EN

Stack Overflow用户
提问于 2020-05-22 03:15:47
回答 1查看 203关注 0票数 0

我有一些模型:

代码语言:javascript
运行
复制
from django.db import models
from django.conf import settings


class Question(models.Model):
    name = models.CharField(unique=True, max_length=50)
    desctiption = models.TextField(max_length=500, unique=True)

    def __repr__(self):
        return f"Question: {self.name}"


class Answer(models.Model):
    """Answer for one question. Can be correct or incorrect"""

    name = models.CharField(unique=True, max_length=50)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    answer = models.CharField(max_length=50)
    is_correct = models.BooleanField(default=False)

    def __repr__(self):
        return f"Answer: {self.name}"


class Quiz(models.Model):
    """Quiz Model contain questions"""

    name = models.CharField(unique=True, max_length=50)
    desctiption = models.TextField(max_length=500, unique=True)
    questions = models.ManyToManyField(Question)

    def __repr__(self):
        return f"Quiz: {self.name}"


class ProgressUserQuiz(models.Model):
    """Save user progress for any quiz"""
    ...

我不能理解如何构造ProgressUserQuiz。例如。如果用户在测验中通过了两个问题并关闭了选项卡,他可以返回到他的最后一个问题。当他完成后,我想把这个添加到模型中。我该怎么做?tnx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 06:04:30

您可以对问题使用状态标志

代码语言:javascript
运行
复制
class ProgressUserQuiz(models.Model):
    status_opt = (
    ('answered',"Answered"),
    ('passed',"Passed"),
    ('closed',"Closed"),
    )
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    status = models.CharField(choices=status_opts,max_length=50)
    something else like answer and marks?...

您可以在每个问题完成后更新此表,并使用此模型来获取状态。您还可以从这些表中筛选某些测验问题的数据。

代码语言:javascript
运行
复制
ProgressUserQuiz.objects.filter(question__in=list(quizinstance.questions.all())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61942171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档