[英]Django - Select MAX of field of related query set
說我是否有模型:
class User(models.Model):
name = ...
dob = ...
class Event(models.Model):
user = models.ForeignKey(User, ...)
timestamp = models.DateTimeField()
我想查詢所有用戶並使用事件計數和 Events.timestamp 的 MAX 進行注釋
我知道我可以做到:
Users.objects.all().annotate(event_count=models.Count('event_set'))
但是我如何做相關查詢集字段的最大值? 我希望它是一個單一的查詢,例如:
SELECT Users.*, MAX(Events.timestamp), COUNT(Events) FROM Users JOIN Events on Users.id = Events.user_id
您可以使用查詢表達式來實現這一點。 根據您的代碼,您可能必須使用與外鍵相關的名稱,但這會導致如下所示:
from django.db.models import Count, F, Func,
Users.objects.all().annotate(
event_count=Count('event_set'),
max_timestamp=Func(F('event_set__timestamp'), function='MAX')
)
您可以嘗試為此進行聚合查詢,如下所示:
from django.db.models import Max
Users.objects.all().aggregate(Max('Events.timestamp'))
請在此處查看Django 文檔中上述代碼的詳細信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.