假设我们有django模型Parent
和Child
。 Child
属于一个Parent
,一个Parent
可以有多个孩子。
class Parent(models.Model):
pass
class Child(models.Model):
parent = models.ForeignKey(Parent)
我想获得按孩子数量排序的所有父母的一套。
答案 0 :(得分: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')
希望它有所帮助。
答案 1 :(得分:1)
阅读django docs中的aggregate函数 在任何情况下,您都可以执行parent_instance.child_set.count()来获取子项数 如果我没有弄错你可以过滤,也可以通过这种关系来命令。 这是reverse relations
的链接