【问题标题】:Django ordering parent model by count of children models in (one to many relation)Django按子模型的数量排序父模型(一对多关系)
【发布时间】:2013-08-24 20:21:14
【问题描述】:

假设我们使用 django 模型 ParentChildChild 属于一个Parent,一个Parent 可以有多个孩子。

class Parent(models.Model):
   pass

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

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

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

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

    from django.db.models import Count
    
    ordered_parents = Parent.objects.annotate(num_children=Count('child_set')).order_by('-num_childen')
    

    希望对你有帮助。

    【讨论】:

    • 谢谢。我一直在使用搜索词寻找这个答案:“django order by set size”,希望这些标签将来对人们有所帮助:)
    • 如何将条件传递给 Count()?我的意思是计算儿童现场条件检查。
    【解决方案2】:

    阅读 django 文档中的 aggregate 函数 在任何情况下,您都可以执行 parent_instance.child_set.count() 来获取孩子的数量 如果我没记错的话,您可以通过该关系进行过滤和 order_by。 这是reverse relations的链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2019-04-15
      • 2019-05-09
      • 1970-01-01
      • 2018-01-04
      相关资源
      最近更新 更多