django重新组合奇怪的行为

标签 django django-templates

无论出于何种原因,我都无法在本地复制此问题,但在我的一个模板中的生产服务器上,重新组合标记正在做一些奇怪的事情。我正在尝试对所有具有相同pickup_id 的捐赠进行分组,并仅显示其中有多少被“错过”。由于某种原因,它在我的列表中多次显示相同的pickup_id。

查看

missed_routes = Donor.objects.filter(missed='YES').order_by('pickup_date')  

模板

{% block content %}
{% regroup missed_routes by pickup_id as missed_pickups %}

<div class="missedColumn">
    <h2>Missed Donations</h2>
    <p>Looks like we have some stragglers…</p>
    <p>These routes have missed donations in them.</p>
    {% for routes in missed_pickups %}

        <p><a href="/reschedule/{{ routes.grouper }}">{{ routes.list.0.route }}</a> - {{ routes.list.0.pickup_date }} ({{ routes.list|length }} missed - {{ routes.list.0.pickup_id }}</p>
    {% endfor %}
</div>

resulting html # 600 是pickup_id

        <p><a href="/reschedule/600">Syosset</a> - Sept. 14, 2012 (1 missed - 600</p>


        <p><a href="/reschedule/423">Huntington Station</a> - Sept. 14, 2012 (1 missed - 423</p>


        <p><a href="/reschedule/600">Syosset</a> - Sept. 14, 2012 (2 missed - 600</p>

在一个拾取的 html 输出中迭代每个捐助者时

        <p><a href="/reschedule/600">Syosset</a> - Sept. 14, 2012 (1 missed - 600
        <ul>

            <li>134170</li>

        </ul>
        </p>


        <p><a href="/reschedule/423">Huntington Station</a> - Sept. 14, 2012 (1 missed - 423
        <ul>

            <li>134938</li>

        </ul>
        </p>


        <p><a href="/reschedule/600">Syosset</a> - Sept. 14, 2012 (2 missed - 600
        <ul>

            <li>134174</li>

            <li>133151</li>

        </ul>

最佳答案

问题在于 Django 的重新组合取决于您重新组合所依据的属性对列表进行排序。见 docs :

Note that {% regroup %} does not order its input! Our example relies on the fact that the cities list was ordered by country in the first place. If the cities list did not order its members by country, the regrouping would naively display more than one group for a single country

因此,改变:

missed_routes = Donor.objects.filter(missed='YES').order_by('pickup_date')  

missed_routes = Donor.objects.filter(missed='YES').order_by('pickup_id')  

关于django重新组合奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12451961/

相关文章:

django - Django'ascii'编解码器无法编码字符

python - Django - 始终呈现的上下文

django - 用于 Django 容器 SMTP 后端的 Docker SMTP 服务器

python - 如何从 django 管理界面更改 django 中的模型名称?

python - 枕头滴灌领域用python3.2 django1.8

Django 表单和标题属性

django - 如何将自定义模板页面添加到夹层?

css - 尝试获取此 Django 模板代码以在每个 h4 标题*之前*打印一个换行符

ModelFormset 的 Django 删除按钮操作

django - django 模板循环中的 get_profile 导致许多 SQL 请求