Список заказов по количеству запросов в Django / Python - PullRequest
2 голосов
/ 27 февраля 2011

Извините, это просто, но я новичок в Python и Django.

У меня есть список пользователей, которые выполнили действие, которое сохраняется в отдельной таблице. Я хочу показать список этих пользователей, отсортированный по тому, сколько раз они предприняли другое действие.

Я понимаю, как получить счет:

users = User.objects.all()
for user in users:
    print user.action_set.count()

И я понимаю, как показать счетчики в моем шаблоне:

{% for user in users %}
    {{ user.action_set.count }}
{% endfor %}

Но я не уверен, как настроить сортировку пользователей по количеству установленных действий.

1 Ответ

4 голосов
/ 27 февраля 2011

Аннотирование / Агрегация http://docs.djangoproject.com/en/dev/topics/db/aggregation/

from django.db.models import Count
users = User.objects.annotate(action_count=Count('action')).order_by('action_count')
# note that this also saves your extra query PER user object.

{% for user in users %}
   {{ user.action_count }}
{% endfor %}

Для дальнейшего использования, , если вы не можете отсортировать по БД , вы можете отсортировать по списку в Python ...

my_list.sort(key=lambda x: x[2])

my_list.sort(key=lambda x: x.method())

Очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...