Opened 7 years ago

Closed 7 years ago

#27812 closed Bug (invalid)

When there is a DateTimeField django does not group by

Reported by: Fabio García Sánchez Owned by: nobody
Component: Database layer (models, ORM) Version: 1.10
Severity: Normal Keywords: queryset, group by
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Fabio García Sánchez)

I have 2 models, both have almost the same fields. Just one of them has a DateTimeField.
The problem comes when I try to group by (not on the DateTimeField) and summarize using Sum in annotate. The model that does not have the DateTimeField works properly, the other groups by day, the Sum is per day.

qs1 = Bills.objects.values('tipo_documento').annotate(total=Sum('venta_neto'))
print(qs1 )
<QuerySet [{'tipo_documento': 'FV', 'total': Decimal('8419159.0000')}, {'tipo_documento': 'FY', 'total': Decimal('12500000.0000')}, {'tipo_documento': 'FY', 'total': Decimal('210000.0000')}...

debug_toolbar shows, effectively is grouping by "document_date", but I have just "tipo_documento" in values:

SELECT `biable_facturasbiable`.`tipo_documento`, SUM(`biable_facturasbiable`.`venta_neto`) AS `Total` FROM `biable_facturasbiable` GROUP BY `biable_facturasbiable`.`tipo_documento`, `biable_facturasbiable`.`document_date` ORDER BY `biable_facturasbiable`.`document_date` DESC LIMIT 21

this repeat the type ('tipo_documento'), each Total is per day.

On the other hand, the model without DateTimeField work properly:

qs2 = Bills2.objects.values('tipo_documento').annotate(total=Sum('venta_neto'))
print(qs2 )
<QuerySet [{'tipo_documento': 'FV', 'total': Decimal('22367372215.1000')}, {'tipo_documento': 'NV', 'total': Decimal('-38955434.0000')}, {'tipo_documento': 'NI', 'total': Decimal('0.0000')}, {'tipo_documento': 'FY', 'total': Decimal('10155529934.9700')}]>

qs2 works properly. I have tried to do the same example with another models and I have got the same issue.

debug_toolbar shows:

SELECT `biable_movimientoventabiable`.`tipo_documento`, SUM(`biable_movimientoventabiable`.`venta_neto`) AS `Total` FROM `biable_movimientoventabiable` GROUP BY `biable_movimientoventabiable`.`tipo_documento` ORDER BY NULL LIMIT 21

Thanks

Change History (5)

comment:1 by Fabio García Sánchez, 7 years ago

Description: modified (diff)

comment:2 by Fabio García Sánchez, 7 years ago

Description: modified (diff)

comment:3 by Tim Graham, 7 years ago

Could you please provide the minimal models to reproduce it? Are you using Meta.ordering? If so, you might be tripped up by the issue described in #14357.

in reply to:  3 comment:4 by Fabio García Sánchez, 7 years ago

Replying to Tim Graham:

Could you please provide the minimal models to reproduce it? Are you using Meta.ordering? If so, you might be tripped up by the issue described in #14357.

Tim thanks so much, that was the problem. I took away the ordering and it works. I have not seen completely the issue #14357 but just with that it works. Thanks.

comment:5 by Tim Graham, 7 years ago

Resolution: invalid
Status: newclosed
Note: See TracTickets for help on using tickets.
Back to Top