print(str(high_margin.query))
W ten sposób możesz uzyskać to, co queryset
produkuje i bawi się, ponieważ jest to leniwe zapytanie, jak stwierdził odpowiedz tutaj.
Więc otrzymałem oczekiwane zapytanie SQL, po prostu dodając expiry_date
w values
, który tworzy grupę według nazwy, datę wygaśnięcia określoną przez docs .
Zmienia się kod 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)]
*nie jestem pewien, czy rzeczywiście jest poprawny