如何返回所有对象的id并将其放置在我的结果对象中?[django]

如何返回所有对象的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

当我提交此表单时,它总是只向我返回id 1的值,而当我尝试替换我编写的另一个值时,2确实向我返回了此值。然后我明白了这个循环过程不起作用,我知道这是因为返回。因此,我需要知道如何返回所有对象的id并将其放置在我的_结果对象中

views.py

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)})