您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django:通过多对多字段订购模型

Django:通过多对多字段订购模型

Django 1.1(当前为beta)增加了对聚合的支持。您的查询可以通过以下方式完成:

from django.db.models import Max
People.objects.annotate(max_weight=Max('roles__weight')).order_by('-max_weight')

这样可以按最重的角色对人员进行排序,而不会返回重复项。

生成查询是:

SELECT people.id, people.name, MAX(role.weight) AS max_weight
FROM people LEFT OUTER JOIN people_roles ON (people.id = people_roles.people_id)
            LEFT OUTER JOIN role ON (people_roles.role_id = role.id)
GROUP BY people.id, people.name
ORDER BY max_weight DESC
Go 2022/1/1 18:43:20 有500人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶