9

假设我们拥有 django 模型Parent,并且Child. Child属于一个Parent,一个Parent可以有多个孩子。

class Parent(models.Model):
   pass

class Child(models.Model):
  parent = models.ForeignKey(Parent)

我想获得按孩子数量排序的所有父母的集合。

4

2 回答 2

8

child_setrelated_name是模型中您的parent字段的默认值Child。如果您指定了不同的代码,则必须相应地更改代码。

from django.db.models import Count

ordered_parents = Parent.objects.annotate(num_children=Count('child_set')).order_by('-num_childen')

希望能帮助到你。

于 2013-08-22T08:13:18.000 回答
1

阅读 django 文档中的聚合函数,无论如何,您都可以执行 parent_instance.child_set.count() 来获取孩子的数量,如果我没记错的话,您可以过滤以及 order_by 该关系。这是反向关系的链接

于 2013-08-22T08:18:02.480 回答