python - 如何在不使用原始 SQL 的情况下按foreignkey对象的数量过滤对象?

标签 python django orm django-aggregation

这在 Django 中终于可能了吗?如果没有这个功能,使用 ORM 就会有点奇怪。

最佳答案

Django 聚合文档中实际上有两个部分,名为 filtering on annotationsorder_by()这应该可以满足您的需求:

books_w_author_count = Book.objects.annotate(num_authors=Count('authors'))

# just a filter by number of objects
books_w_author_count.filter(num_authors__gt=1)

# just ordering on the count
books_w_author_count.order_by('num_authors')

class Author(modules.Model):
   # ...

class Book(models.Model):
   # ...
   authors = models.ManyToManyField(Author)

关于python - 如何在不使用原始 SQL 的情况下按foreignkey对象的数量过滤对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9116424/

相关文章:

python - 从两个稀疏矩阵计算任意行的点积的快速方法是什么

python - python 脚本可以在 bash 脚本中执行函数吗?

python - 如果相应的 IDs pandas 中只存在值,则删除 NaNs

python - 如何在 Django 1.10 的新 TEMPLATES 设置中包含默认的 TEMPLATE_CONTEXT_PROCESSORS

mysql - 如何在 MySql 数据库中使用 guid.comb 策略

python - KD 树最近邻搜索是如何工作的?

django - 有没有办法改变 django-mdeditor 中的语言

java - Hibernate 一对多无法初始化集合

java - java中如何从数据库生成实体类

python - 无法在 Django 中呈现表单