假設我們擁有django模型Parent
和Child
。 Child
屬於一個Parent
和一個Parent
可以有多個孩子。Django按照(一對多關係)兒童模型數排序父模型
class Parent(models.Model):
pass
class Child(models.Model):
parent = models.ForeignKey(Parent)
我想根據孩子的數量獲得一組所有父母。
假設我們擁有django模型Parent
和Child
。 Child
屬於一個Parent
和一個Parent
可以有多個孩子。Django按照(一對多關係)兒童模型數排序父模型
class Parent(models.Model):
pass
class Child(models.Model):
parent = models.ForeignKey(Parent)
我想根據孩子的數量獲得一組所有父母。
child_set
是您的parent
字段在Child
模型中的默認related_name
字段。如果您指定了不同的代碼,則必須相應地更改代碼。
from django.db.models import Count
ordered_parents = Parent.objects.annotate(num_children=Count('child_set')).order_by('-num_childen')
希望它有幫助。
在Django文檔 閱讀了關於aggregate功能,在任何情況下,你可以做parent_instance.child_set.count()讓孩子 的數目,如果我沒有記錯,你可以過濾並ORDER_BY這層關係。 這是鏈接reverse relations
謝謝。我一直在尋找這個答案,使用搜索詞:「django order by set size」,希望這些標籤能夠幫助未來的人:) –
如何將條件傳遞給Count()?我的意思是計數與孩子現場條件檢查。 –