我有一个Person模型和一个Tag模型,它们之间有一个m2m。
我需要提取与给定人员查询集中最多记录相关联的标记,以及计数。
有没有一种优雅、高效的方法来使用Django ORM来提取这些内容?
更好的是,有没有一种方法可以通过一些注释获得整个标签分布?如何才能将所有连接到通过m2m连接的对象子集的对象拉出来呢?
谢谢!
发布于 2010-09-02 12:19:11
这将为您提供最频繁的标记:
from django.db.models import Count
Tag.objects.filter(person__yourcriterahere=whatever [, morecriteria]).annotate(cnt=Count('person')).order_by('-cnt')[0]发布于 2010-09-01 11:58:34
我需要提取与给定人员查询集中最多记录相关联的标记,以及计数。
我以前也遇到过类似的问题。在我的例子中,在Unit和Weapon模型之间定义了m2m关系。我使用以下查询来找出每个Unit使用的武器数量,并按照武器数量的降序对它们进行排序。
from django.db.models import Count
q = Unit.objects.all().annotate(count = Count('weapons')).order_by('-count')我将根据您的需求调整查询,如下所示:
q = User.objects.all().annotate(count = Count('tag')).order_by('-count')https://stackoverflow.com/questions/3613080
复制相似问题