print(str(high_margin.query))
По този начин можете да получите какво представлява queryset
произвежда и играе наоколо като мързелива заявка, както е посочено от отговорете тук.
Така че получих очакваната SQL заявка, като просто добавих expiry_date
в values
, което създава група по име, дата на изтичане, както е посочено от docs .
Кодът се променя като:
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)]
*не съм сигурен дали наистина е правилно