sql >> Base de Datos >  >> RDS >> Mysql

Agrupe por combinación de 2 campos y luego ordene por la suma de cada grupo, múltiples anotaciones django

print(str(high_margin.query))

De esta manera puede obtener lo que un queryset produce y juega porque es una consulta perezosa como lo indica respuesta aquí. Así que obtuve la consulta SQL esperada simplemente agregando expiry_date en los values , que produce un grupo por nombre, fecha de caducidad según lo establecido por docs .
El código cambia como:

high_margin = StoreInvoiceBreakup.objects \
  .filter(store_invoice__store_id=store_id) \
  .values('product_name', 'expiry_date') \
  .annotate(gross_margin_sum=Sum('gross_margin')) \
  .order_by('gross_margin_sum') \
  .distinct()[:int(sell_range)]

*no estoy seguro si es correcto