Сгруппировать и отличить значения в группе - PullRequest
2 голосов
/ 31 августа 2011

У меня есть объект журнала, в котором есть пользователи, даты и т. Д.

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

Что-то вроде:

Log.objects.values('user').annotate(count=Count('date')).distinct("date)

Итак, в конце я бы подсчитал каждого пользователя с записями в журнале на дату назначения.

1 Ответ

3 голосов
/ 03 сентября 2011

Исходя из вашего комментария, я думаю, что это то, что вы хотите:

Log.objects.values('user').annotate(number_of_days=Count('date', distinct=True))

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

Оставив исходный ответ, как показано ниже:


Мне не совсем ясен вопрос, но я думаю, что один из двух сценариев ниже охватывает то, что вы хотите:

Если вам нужно количество отдельных пользователей с записями в журнале на каждую отдельную дату, это то, что вам нужно:

Log.objects.values('date').annotate(number_of_users=Count('user', distinct=True))

Это даст вам список с датами и соответствующим количеством пользователей, у которых была одна или несколько записей журнала на эту дату.

Если вы хотите подсчитать количество записей в журнале, которые каждый пользователь сделал на каждую отдельную дату, это может сработать, но я не пробовал:

Log.objects.values('date','user').annotate(number_of_log_entries=Count('id'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...