SQL в Django ORM для группировки по отличительным признакам

Каким будет перевод приведенного ниже запроса на django orm?

select date(start_date) as start, count(*) as tournament_count, count(distinct(user_id)) from tournament group by start

Я не уверен, как сделать часть count(distinct(user_id). Я думаю, что это должно выглядеть примерно так

Tournament.objects.annotate(date=TruncDate('start_date')).values('date').annotate(tournaments=Count('id')).order_by()

Но это не дает мне distinct части первоначального запроса

Вы можете использовать distinct=True в вашей Count функции, как эта.

# your query 
tournaments=Count('id', distinct=True)

Это SQL эквивалент COUNT(DISTINCT your_field ).

Для более подробной информации посмотрите django docs

Вернуться на верх