Python Django聚合问题-奇怪的行为

Python Django聚合问题-奇怪的行为,python,django,annotations,aggregate,Python,Django,Annotations,Aggregate,我有一个活动查询集,在该模型上有一个关联的用户id。在本例中,我有一个基于此语句的查询集,其中包含以下内容 activities.values('user_id').annotate(Min('duration')) [ {'user_id': 149026, 'duration__min': Decimal('480.0000')}, {'user_id': 149026, 'duration__min': Decimal('454.0000')}, {'user

我有一个活动查询集,在该模型上有一个关联的用户id。在本例中,我有一个基于此语句的查询集,其中包含以下内容

activities.values('user_id').annotate(Min('duration'))

[
    {'user_id': 149026, 'duration__min': Decimal('480.0000')}, 
    {'user_id': 149026, 'duration__min': Decimal('454.0000')}, 
    {'user_id': 149026, 'duration__min': Decimal('360.0000')}, 
    {'user_id': 149027, 'duration__min': Decimal('420.0000')}
]
我需要为每个持续时间最短的用户_id获取活动。我有点困惑,为什么下面的陈述会让我得到我想要的

activities.values('user_id').annotate(Min('duration')).order_by('user_id')

[
    {'user_id': 149026, 'duration__min': Decimal('360.0000')}, 
    {'user_id': 149027, 'duration__min': Decimal('420.0000')}
]

为什么order_by(“user_id”)子句会返回特定用户的最低持续时间活动。另外,注释前面的value子句不应该导致返回的查询对每个唯一的用户id都有一个注释结果吗?

您可以检查
QuerySet
.query
,这样您就可以了解每次自动生成的SQL查询是什么了。本例在中有详细描述吗?
活动
是否有任何顺序(可能在
Meta
中)?活动在Meta中没有任何顺序。我将回顾并与q联系