Как аннотировать сложный набор запросов в django

Я хочу иметь счетчик случаев использования.

У меня есть три модели Customer (все записи пользователей), Usecase (все записи usecases) и CustomerUsecaseAssociation (записи пользователей и подписки).

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

Модели

Class Customer(models.Model):
   customer_name = models.CharField(max_lenght=50)

class Usecase(models.Model):
   usecase_name = models.CharField(max_lenght=50)

class CustomerUsecaseAssociation(models.Mode):
   customer = models.ForignKey(Customer, on_delete=models.CASCADE)
   usecase = models.ForignKey(Usecase, on_delete=models.CASCADE)

Предзагружено

Клиент

id    customer_name
1     abc
2     efg
3     hij

Usecase

id    usecase_name
1     AT
2     BT
3     CT

CustomerUsecaseAssociation

id    usecase     customer
1     1           1
2     2           1
3     2           2
4     3           3

Желаемый выход

[
  {
    "usecase_name": "AT-BT",
    "subscriptions": "1"
  },
  {
    "usecase_name": "BT",
    "subscriptions": "1"
  },
  {
    "usecase_name": "CT",
    "subscriptions": "1"
  }
]

Notes Я буду настоятельно рекомендовать annotation, если кто-нибудь мне поможет.

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