print(str(high_margin.query))
Tímto způsobem můžete získat to, co queryset
produkuje a hraje si, protože jde o líný dotaz, jak uvádí odpovězte zde.
Takže jsem dostal očekávaný SQL dotaz pouhým přidáním expiry_date
v values
, která vytváří skupinu podle názvu, datum vypršení platnosti, jak je uvedeno v docs .
Kód se změní jako:
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)]
*nejsem si jistý, jestli je to skutečně správné