【发布时间】:2020-04-14 16:25:45
【问题描述】:
有一个正确和不正确的问题列表(如果问题是错误和正确的则得分),每个问题都附有添加按钮。
当我点击添加按钮时,问题被添加到QuestionQuiz 的测验中,模型连同他们的分数正确得到 +1 和不正确的 -1 被更新到数据库。
相应的测验 id 是通过下面附加的表单视图图像中的 url 发送的:path('filter_list/<pk>',views.FilterQuestionView.as_view(),name='filter'),
我想在这里实现的是页面最初加载时我想要 根据获取的测验 id 显示相应问题的分数 从数据库。如何获取所有问题的标题和描述,以及问题是否已添加到测验中
django 的实现方式是什么?
可能有一个获取所有数据的方法,包括已经添加到测验中的数据,例如当前正在获取的数据
title,description 其余字段是静态的
我可以更改 fetch title,decription,correct,incorrect,flag(true if added to current quiz_id else false)
图片已附上
假设一个问题被添加到测验中。按钮中的文本必须是ADDED,并且在最初加载页面时必须更新正确和不正确的内容。这里第一个问题被添加到测验中。 注意:Value = 1 是默认值,由用户更新为正确和不正确。
以下是我创建的模型:
class Question(models.Model):
title = models.CharField(max_length=255 )
description = models.TextField(max_length=300)
class Quiz(models.Model):
name = models.CharField(max_length=225,blank=False )
quiz_type =models.IntegerField(choices=QUIZ_TYPE,default=0)
questions = models.ManyToManyField( Question, through='QuestionQuiz', related_name="quiz_question")
categories= models.ManyToManyField(Category,through='CategoryQuiz',related_name='quiz_category')
class QuestionQuiz(models.Model):
quiz = models.ForeignKey(Quiz,on_delete=models.CASCADE)
question = models.ForeignKey(Question,on_delete=models.CASCADE)
correct =models.DecimalField(max_digits=4, decimal_places=3)
incorrect= models.DecimalField(max_digits=4, decimal_places=3)
class Meta:
unique_together = ('quiz','question')
Views.py - 使用 django_filter 包创建过滤器
class FilterQuestionView( AddQuestionAjaxFormMixin,FormMixin,FilterView):
form_class = QuestionQuizForm
filterset_class = QuestionFilter
paginate_by = 5
context_object_name = 'questions'
{% for question in questions %}
<tr>
<form method='POST' id="q_{{question.id}}">
<td>{{question.title}}</td>
<td>{{question.description}}</td>
<td><input type="text" value="1" id="correct_{{question.id}}"></td>
<td><input type="text" value="1" id="incorrect_{{question.id}}"></td>
<td>
<a id="btn_{{question.id}}" class="btn purple-gradient" onclick="addRemoveQuestion({{question.id}},{{quiz}})" >Add</a>
</td>
</form>
【问题讨论】:
标签: python django django-3.0