Django ORM按一列分组并返回oth

2024-04-24 07:37:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在简单的世界中,我尝试用Django编写一个将返回结果的查询

与此类似:

select id, max(score), screen, details from results
group by screen
where user_id=123
order by score desc, screen

我的代码:

^{pr2}$

但我不返回Results对象而是json。我想把结果作为结果对象

user = User.objects.filter(id=id)
results = Results.objects.filter(user=user).order_by('-score', 'screen')

有人能帮忙吗?在


Tags: 对象djangoidbyobjects世界orderfilter
1条回答
网友
1楼 · 发布于 2024-04-24 07:37:20

^{}调用将您的QuerySet转换为 放入dicts的列表中。在

如果希望将其保留为QuerySet,但只从您感兴趣的数据库中检索字段,请使用^{}^{}

results = Results.objects.filter(user=user)
                         .annotate(score=Max('score'))
                         .order_by('-score', 'screen')
                         .only('screen')  # not values()

如果尝试访问实例上延迟的字段,则会导致额外的db命中。您可以验证这些实例是否不完整Results实例:

^{pr2}$

相关问题 更多 >