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