[英]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.