如何返回所有对象的id并将其放置在我的结果对象中?[django]
当我提交此表单时,它总是只向我返回id 1的值,而当我尝试替换我编写的另一个值时,2确实向我返回了此值。然后我明白了这个循环过程不起作用,我知道这是因为返回。因此,我需要知道如何返回所有对象的id并将其放置在我的_结果对象中 views.py如何返回所有对象的id并将其放置在我的结果对象中?[django],django,Django,当我提交此表单时,它总是只向我返回id 1的值,而当我尝试替换我编写的另一个值时,2确实向我返回了此值。然后我明白了这个循环过程不起作用,我知道这是因为返回。因此,我需要知道如何返回所有对象的id并将其放置在我的_结果对象中 views.py from django.shortcuts import render from .models import Section, Question, Result from django.http import HttpResponseNotFound
from django.shortcuts import render
from .models import Section, Question, Result
from django.http import HttpResponseNotFound
def index(request):
text = "this is from views of exam app!"
return render(request, 'exam/index.html', {'text': text})
def section_list(request):
try:
sections = Section.objects.all()
except:
return HttpResponseNotFound("Error")
return render(request, 'exam/section.html', {'portals': sections})
def my_question(request, q_id):
sections = Section.objects.get(id=q_id)
template_name = 'exam/question.html'
try:
answer = request.POST['answer']
for result in Result.objects.all():
result_id = result.result_question_id
my_result = Result.objects.filter(id=result_id)
return render(request, template_name, {'repr': repr(my_result)})
except:
return render(request, template_name, {'sections': sections, 'error_message': 'You have to select one of the following answer'})
return render(request, template_name, {'sections': sections})
url.py
from . import views
from django.urls import path
from django.conf.urls import url
app_name = "exam"
urlpatterns = [
# /index/
path('', views.index, name="index"),
# /index/section/
path('portal/', views.section_list, name="portal"),
# /index/question/10/
path(r'question/<int:q_id>/', views.my_question, name="question"),
]
question.html
{% extends 'base.html' %}
{% block title %} Question Page {% endblock %}
{% block body %}
{% if error_message %}
<div class="notes">
<div class="container">
<div class="alert alert-info">
<strong>Info!</strong> {{ error_message }}
</div>
</div>
</div>
{% endif %}
<div class="questions">
<div class="container">
{% for section in sections.question_set.all %}
<h2>{{ section.question }}</h2>
<form method="post">
{% csrf_token %}
<div class="answer">
<input type="radio" name="answer" id="{{ section.ans1 }}" value="{{ section.ans1 }}">
<label for="{{ section.ans1 }}">{{ section.ans1 }}</label>
{% if false_answer %}
<span class="false-message">{{ false_answer }}</span>
{% elif true_answer %}
<span class="true-message">{{ true_answer }}</span>
{% endif %}
</div>
<div class="answer">
<input type="radio" name="answer" id="{{ section.ans2 }}" value="{{ section.ans2 }}">
<label for="{{ section.ans2 }}">{{ section.ans2 }}</label>
{% if false_answer %}
<span class="false-message">{{ false_answer }}</span>
{% elif true_answer %}
<span class="true-message">{{ true_answer }}</span>
{% endif %}
</div>
<div class="answer">
<input type="radio" name="answer" id="{{ section.ans3 }}" value="{{ section.ans3 }}">
<label for="{{ section.ans3 }}">{{ section.ans3 }}</label>
{% if false_answer %}
<span class="false-message">{{ false_answer }}</span>
{% elif true_answer %}
<span class="true-message">{{ true_answer }}</span>
{% endif %}
</div>
<div class="answer">
<input type="radio" name="answer" id="{{ section.ans4 }}" value="{{ section.ans4 }}">
<label for="{{ section.ans4 }}">{{ section.ans4 }}</label>
{% if false_answer %}
<span class="false-message">{{ false_answer }}</span>
{% elif true_answer %}
<span class="true-message">{{ true_answer }}</span>
{% endif %}
</div>
<button class="btn btn-success">Next</button>
{{ section.id }}
{{ result.result_question_id }}
</form>
{% endfor %}
{% if repr %}
{{ repr }}
{% endif %}
</div>
</div>
{% endblock %}
我需要知道如何返回所有对象的id并放置在我的_结果对象中
从回路中移除回路。在for循环之前将我的_结果转换为数组。将my_result=result.objects.filterid=result\u id替换为my_result.appendResult.objects.filterid=result\u id。在for循环之后,将您的返回放在那里,my_result将有您想要的结果列表
my_result = []
for result in Result.objects.all():
result_id = result.result_question_id
my_result.append(Result.objects.get(id=result_id))
return render(request, template_name, {'repr': repr(my_result)})
在for循环之前将我的_结果转换为数组?如果您的意思是:my_result=[],before for循环,这将是可以的,但是我不能在for循环之前添加append,因为我想从result提取所有对象以获取id,所以如果在for循环之前添加append,我将得到一个错误,因为result_id不会在循环内部定义。我已更新并添加了您的代码。
my_result = []
for result in Result.objects.all():
result_id = result.result_question_id
my_result.append(Result.objects.get(id=result_id))
return render(request, template_name, {'repr': repr(my_result)})