Как сгруппировать по количеству связанных моделей в Django ORM - PullRequest
1 голос
/ 30 сентября 2019

Допустим, у меня есть следующие модели:

class Conversation(Model):
  ...

class Message(Model):
  conversation = models.ForeignKey(Conversation)

Следующий код подсчитывает количество сообщений для каждого разговора:

Conversation.objects \
            .filter(...) \
            .annotate(size=Count("message")) \
            .values("size")

и возвращает набор запросов {'size': 0}, {'size': 1}, {'size': 0}, {'size': 0}и т.д.

Но как мне объединиться по размерам разговоров? То есть получить результат примерно так: (0, 3), (1, 1), где первый элемент в каждой паре - это размер разговора, а второй элемент - это количество разговоров такого размера?

...