08
Фев
2017

Как выводить объекты Queryset’а по одному?

Идея такая: фильтром выбрать из базы несколько элементов (вопросов к тесту). Далее надо выводить эти элементы по одному. Сначала выводим первый вопрос теста, когда пользователь ответил - второй, и так далее. И чтобы это происходило без обновления страницы. Не могу понять как это реализовать. Как отслеживать какой вопрос выведен и как выбирать следующий, после ответа. Вроде как нужен ajax. Если да, то что писать во вью. И в запросе?

def index(request, course_id, test_task_id):
    test = Test_task.objects.get(id = test_task_id)
    test_question_list = Test_question.objects.filter(test_task = test_task_id)
    for t in test_question:
        answer_test_list = Answer_test.objects.filter(test_question = t.id)
   if request.user.is_authenticated():
        if request.method == "POST" and request.is_ajax():
         #что делать если на вопрос ответили
        else:
         #как вывести первый вопрос
            context = {'test': test,'test_question' : test_question, 'answer_test' : answer_test, 'course_id':course_id}
            return render(request, 'test_task/test_task.html', context)
else:
    return redirect("user_profile:login_view")

Все вопросы выводятся так:

    <h3>Тест. {{ test.name_test }}</h3>
    <div class="question-panel">
        {% for t in test_question %}
        <div class="question_text" data-num="{{t.id}}">
            {{t.question_text|linebreaksbr}}
        </div>
        <div class="list-group"><div>
            {% for answer in answer_test %}
             <a id="v_1" class="list-group-item questvariant" data-num="{{answer.id}}"> {{ answer.answer }}</a>
            {% endfor %}
        </div></div>
    {% endfor %}
    </div>

Пыталась как-то так делать запрос:

$(" .questvariant").click( function(e){

    e.preventDefault();
    var quest_id = $(".question_text").data("num");
    var var_id = $(this).data("num");
    var data = {
        'quest_id' : quest_id,
        'var_id' : var_id,
    };
     alert(data);
    $.ajax({
        type: "POST",
        url: "/test/1/1/",
        data: data,
        cache: false,
        success: function(data){

        }
   });
});

Источник: https://ru.stackoverflow.com/questions/625147/%D0%9A%D0%B0%D0%BA-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D1%8C-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B-queryset%D0%B0-%D0%BF%D0%BE-%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC%D1%83

Share

Тебе может это понравится...