Я хочу получить количество элементов по категории (mora_dias_categoria), которая является расчетом модельного поля, но не сгруппирована правильно.
Это то, что я пробовал:
metricasColombia = MetricasPrestamosColombia.objects \
.annotate(mora_cantidad =Sum(F('total_habia_que_recibir')-F('total_recibido'))) \
.annotate(mora_dias_categoria = Case(
When(Q(mora_cantidad__gt=0) & Q(mora_dias__gt=0) & Q(mora_dias__lte=30),then=Value('mora_030')),
When(Q(mora_cantidad__gt=0) & Q(mora_dias__gt=30) & Q(mora_dias__lte=60),then=Value('mora_3060')),
When(Q(mora_cantidad__gt=0) & Q(mora_dias__gt=60) & Q(mora_dias__lte=90),then=Value('mora_6090')),
When(Q(mora_cantidad__gt=0) & Q(mora_dias__gt=90),then=Value('mora_90')),
default=Value('No mora'),
output_field=CharField()
)) \
.values('semana','idPrestamo_id__idContactoInfo_id__ciudad__nombreCiudad','mora_dias_categoria') \
.annotate(totalPrestamos=Count('idPrestamo_id'))
Но все равно получите этот вывод (имеет дубликаты, когда он должен быть агрегирован):
[{'semana': '1-2020', 'idPrestamo_id__idContactoInfo_id__ciudad__nombreCiudad':
'Medellín', 'mora_dias_categoria': 'mora_030',
'totalPrestamos': 1}, {'semana': '1-2020', 'idPrestamo_id__idContactoInfo_id__ciudad__nombreCiudad':
'Medellín', 'mora_dias_categoria': 'mora_030', 'totalPrestamos': 1}...
Большое спасибо!