print(str(high_margin.query))
Auf diese Weise erhalten Sie was für ein queryset
produziert und herumspielt, da es sich um eine faule Abfrage handelt, wie von hier antworten.
Ich habe also die erwartete SQL-Abfrage erhalten, indem ich einfach das expiry_date
hinzugefügt habe in den values
, die eine Gruppe nach Namen und Ablaufdatum erzeugt, wie in docs
Code ändert sich als:
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)]
*nicht sicher, ob es wirklich richtig ist