如何在django模板中随机化两个查询集的结果

时间:2016-05-27 17:33:40

标签: python django

朋友们,我想知道如何在django模板中显示两个不同查询集的结果。

我的views.py如下:

def index(request):
    answers = Answer.objects.filter(user=request.user)
    questions = Question.objects.filter(user=request.user)
    return render(request,"welcome/index.html",locals())

和我的模板是:

{% extends "layout.html" %}
{% block content %}
    {% for q in questions %}
        {{ q.title }}
    {% endfor %}

    {% for a in answers %}
        {{ a.answer }}
    {% endfor %}
{% endblock %}

但正如预期的那样,先列出问题然后再回答问题。我想随机显示问题和答案。答案和问题可以在模板中以任何顺序出现。我怎么做这个,朋友?

1 个答案:

答案 0 :(得分:2)

使用shuffle功能?

import random

def index(request):
    answers = Answer.objects.filter(user=request.user)
    questions = Question.objects.filter(user=request.user)

    mixed = list(answers) + list(questions)
    random.shuffle(mixed)

    return render(request,"welcome/index.html",locals())

现在,您有一个混合的mixed列表。你可以循环它。您可以使用以下方法检查模板中的类型:

{% for item in mixed %}
    {% if item.answer %}
        {{ item.answer }}
    {% else %}
        {{ item.title }}
    {% endif %}
{% endfor %}

(只需确保问题没有answer字段)