Как аннотировать сложный набор запросов в 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, если кто-нибудь мне поможет.