【发布时间】:2021-08-21 21:35:10
【问题描述】:
我想根据用户输入选择的数据从数据库中获取数据。我正在使用 model_name.objects.all 从该模型中获取所有数据。
from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
class quiztitle(models.Model):
Quiz_id = models.AutoField(primary_key=True)
Quiz_title = models.CharField(max_length=600)
User = settings.AUTH_USER_MODEL
User_id= models.ForeignKey(User, on_delete=models.CASCADE)
no_of_ques = models.IntegerField(default=10)
def __str__(self):
return self.Quiz_title
class question(models.Model):
Qid = models.AutoField(primary_key=True)
User = settings.AUTH_USER_MODEL
User_id = models.ForeignKey(User,on_delete=models.CASCADE)
Quiz_id = models.ForeignKey(quiztitle,on_delete=models.CASCADE)
Qques = models.TextField()
Qoption1 = models.TextField()
Qoption2 = models.TextField()
Qoption3 = models.TextField()
Qoption4 = models.TextField()
QAnswer = models.TextField()
def __str__(self):
return self.Qques
class answer(models.Model):
Ansid = models.AutoField(primary_key=True)
Qid = models.OneToOneField(question,on_delete=models.CASCADE)
Quiz_id = models.ForeignKey(quiztitle, on_delete=models.CASCADE)
User = settings.AUTH_USER_MODEL
User_id = models.ForeignKey(User, on_delete=models.CASCADE)
Answer = models.TextField()
class result(models.Model):
result = models.AutoField(primary_key=True)
Quiz_id = models.OneToOneField(quiztitle, on_delete=models.CASCADE)
User_id = models.OneToOneField(User, on_delete=models.CASCADE)
score = models.FloatField()
def __str__(self):
return str(self.pk)
这是用户选择测验标题以开始测验的 html 文件。通过点击尝试测验按钮,用户可以尝试选择测验。 学生.html
<div class="Question-container">
<div>
{% for x in title %}
<h1 class="title"><i class="fa fa-circle" id="quiz-icon" ></i>{{x.Quiz_title}}<button onclick="window.location.href='/sample'">Attempt Quiz</button></h1>
{% endfor %}
</div>
</div>
主要问题->sample.html(这里要获取student.html中列出的所选quiz_title的数据)
<body>
<div class="topnav">
<div class="topnav-right">
<a href="{% url 'home' %}" class="aa">Home</a>
<a href="{% url 'logout' %}" class="aa">Logout </a>
</div>
</div>
<div class="leftbar">
<div>
{% for x in title %}
<h1 class="title">{{x.Quiz_title}}</h1>
<input type="hidden" id="Quiz_id" value="{{x.Qid}}">
{% endfor %}
</div>
{% for x in ques %}
<h1 class="question" >Q. {{x.Qques}}</h1>
<input type="hidden" id="Qid" value="{{x.Qid}}">
<form method="post">
{% csrf_token %}
<div class="radio"><label><input type="radio" id="option1" name="name" value="{{x.Qoption1}}">{{x.Qoption1}}</label></div>
<div class="radio"><label><input type="radio" id="option2" name="name" value="{{x.Qoption2}}">{{x.Qoption2}}</label></div>
<div class="radio"><label><input type="radio" id="option3" name="name" value="{{x.Qoption3}}">{{x.Qoption3}}</label></div>
<div class="radio"><label><input type="radio" id="option4" name="name" value="{{x.Qoption4}}">{{x.Qoption4}}</label></div>
{% endfor %}
<div class="form-group">
<button type="submit" class="btn btn-success" id="save_ans">Save</button>
</div></form>
<div class="paginator">
<div class="form-group">
{% if ques.has_previous %}
<a href="?page={{ques.previous_page_number}}"><button class="btn-back" id="submitAnswer">Back</button></a>
{% endif %}
{% if ques.has_next %}
<a href="?page={{ques.next_page_number}}"><button class="btn-next" id="submitAnswer">Next</button></a>
{% else %}
<a href="/result/"><button type="submit" class="btn btn-success" id="submitAnswer">Submit Quiz</button></a>
{% endif %}
</div>
我想获取数据,即问题以及用户选择的测验标题选项但是 question.objects.all() 给出了存储在表中的所有问题。请帮助我改进逻辑。
views.py
def handle_res(request):
myuser = User.objects.all()
title = quiztitle.objects.all()
ques = question.objects.all()
if request.method == 'POST':
Answer = request.POST.get('ans')
print("Answer",Answer)
Quiz_id = request.POST.get('Quiz_id')
print("Quizid",Quiz_id)
Qid = request.POST.get('Qid')
print("questionid",Qid)
quizid = quiztitle(Quiz_id=Quiz_id)
quesid = question(Qid=Qid)
response = answer(Answer=Answer)
response.User_id = request.user
response.Quiz_id = quizid
response.Qid = quesid
response.save()
return HttpResponseRedirect('/response')
return render(request, "sample.html", context={"ques": ques, "title": title, "myuser": myuser})
【问题讨论】:
标签: django django-models django-rest-framework django-views django-templates