print(str(high_margin.query))
Dessa forma, você pode obter o que um
queryset
produz e brinca como uma consulta preguiçosa, conforme declarado por responda aqui.
Então, recebi a consulta SQL esperada apenas adicionando o expiry_date
nos values
, que produz um grupo por nome, data de validade conforme indicado por docs .O código muda como:
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)]
*não tenho certeza se realmente está correto