Группировать по аннотированному значению в Django ORM - PullRequest
0 голосов
/ 20 февраля 2020

Я хочу получить количество элементов по категории (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}...

Большое спасибо!

1 Ответ

0 голосов
/ 21 февраля 2020

Вы пробовали просто считать id вместо idPrestamo_id? Не видя ваших моделей, я не могу точно определить, является ли это проблемой или нет, но это то, что нужно попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...