Django通过子模型的计数(一对多关系)排序父模型

ald*_*ain 9 django django-models django-queryset

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

class Parent(models.Model):
   pass

class Child(models.Model):
  parent = models.ForeignKey(Parent)
Run Code Online (Sandbox Code Playgroud)

我想获得按孩子数量排序的所有父母的一套.

Adr*_*ián 8

child_set是默认related_name你的parent领域中的Child典范.如果您指定了另一个,则必须相应地更改代码.

from django.db.models import Count

ordered_parents = Parent.objects.annotate(num_children=Count('child_set')).order_by('-num_childen')
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.