我有一些模型:
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
发布于 2020-05-22 06:04:30
您可以对问题使用状态标志
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?...您可以在每个问题完成后更新此表,并使用此模型来获取状态。您还可以从这些表中筛选某些测验问题的数据。
ProgressUserQuiz.objects.filter(question__in=list(quizinstance.questions.all())https://stackoverflow.com/questions/61942171
复制相似问题