将 SQL max() 分组依据翻译成 Django

Translate SQL max() group by to Django

我有一个包含两列的 table:listing 和 bid。每个列表可以得到多个出价。我想 运行 Django 查询 returns 每个列表的最高出价。

在SQL我会这样做:

SELECT listing, max(amount) FROM Bid GROUP BY listing 

在 django 中我试过这个。它只是returns整个table

中的单个最高出价
Bid.objects.values('listing','amount').aggregate(Max('amount'))

您可以 .annotate(…) [Django-doc] 这些:

from django.db.models import Max

Bid.objects.values('listing').<b>annotate(</b>
    max_amount=Max('amount')
<b>)</b>.order_by('listing')

如果 listingForeignKey,但最好注释该模型,例如:

from django.db.models import Max

<b>Listing</b>.objects.annotate(
    max_bid=Max(<b>'bid__amount'</b>)
)

从那时起,这些都是 Listing 模型,因此模型层不会“腐蚀”。