django regroup odd behavior

Refresh

December 2018

Views

305 time

2

I for whatever reason cannot duplicate this issue locally but on my production server in one of my templates the regroup tag is doing something odd. I'm trying to group all donations that have the same pickup_id and just display how many of them were "missed". For some reason it's showing the same pickup_id more than once in my list.

view

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

template

{% 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 # the 600 is the 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>

When iterating over each donor in a pickup html output

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

1 answers

4

Проблема заключается в том, что перегруппировать Джанго зависит от списка заказываемого атрибута вы перегруппировка мимо. Смотрите документы :

Обратите внимание, что {% перегруппировать%} не упорядочивает свой вход! Наш пример опирается на тот факт, что список городов был заказан по стране в первую очередь. Если список городов не заказывал свои членов по стране, перегруппировка бы наивно отобразить более одной группы для одной страны

Таким образом, изменение:

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

в

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