print(str(high_margin.query))
De cette façon, vous pouvez obtenir ce qu'est un queryset
produit et joue comme une requête paresseuse comme indiqué par répondez ici.
J'ai donc obtenu la requête SQL attendue en ajoutant simplement le expiry_date
dans les values
, qui produit un groupe par nom, date d'expiration comme indiqué par docs .
Le code change comme :
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)]
*pas sûr si c'est vraiment correct