在djang中用单个分组依据选择多个字段

2024-06-26 00:22:13 发布

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

我使用Django查询:

 sports.PYST.objects.using( 'sports-data' ).all().values('season','player','team').annotate(max_count = Max('punt_long') ).query

它给出o/p如下:

^{pr2}$

我期望的是:

select season,player,team,max(punt_long)as punt_long from PYST group by season

有人能帮上忙吗?或者需要更多的信息吗?在


Tags: djangodataobjectsallpystmaxteamlong
2条回答

我不认为这不可能没有:

  1. 原始sql
  2. 用于检索按聚合结果筛选的对象的附加查询(这可能需要Q对象的帮助)

编辑1:

关于2号溶液。这也许不是最好的主意,但这是我能想出的最快的办法:

from django.db.models import Max, Q
from operator import __or__ as OR

result_dict = Score.objects.values('season').annotate(Max('punt'))
q = [Q(season=row['season']) & Q(punt=row['punt__max']) for row in result_dict]
qs = Score.objects.filter(reduce(OR, q))

查看此链接了解更多详细信息: http://css.dzone.com/articles/best-way-or-list-django-orm-q

太晚了,但我希望它能对今天的某个人有用:

Model.objects.filter(name__in=["foo", "foo1"]).values('last_name')\
       .order_by('id')\
       .annotate(total=Count('id')).values('first_name')

生成以下查询:

^{pr2}$

相关问题 更多 >