Mysql
 sql >> Database >  >> RDS >> Mysql

Raggruppa per 2 combinazioni di campi e quindi ordina in base alla somma di ciascun gruppo, annotazioni multiple django

print(str(high_margin.query))

In questo modo puoi ottenere ciò che è un queryset produce e gioca come una query pigra, come affermato da rispondi qui. Quindi ho ottenuto la query SQL prevista semplicemente aggiungendo il expiry_date nei values , che produce raggruppamento per nome, data di scadenza indicata da docs .
Il codice cambia come:

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)]

*non sono sicuro se effettivamente corretto