Python 如何根据引用对象的数量筛选对象?

Python 如何根据引用对象的数量筛选对象?,python,django,Python,Django,假设我正在构建这样的文章/评论系统: class Article(models.Model): title = models.TextField() content = models.TextField() class Comment(models.Model): article = ForeignKey(Article) content = models.TextField() 如何筛选Article.objects以查找评论超过十条的文章?您需要查询每篇文

假设我正在构建这样的文章/评论系统:

class Article(models.Model):
    title = models.TextField()
    content = models.TextField()

class Comment(models.Model):
    article = ForeignKey(Article)
    content = models.TextField()
如何筛选
Article.objects
以查找评论超过十条的文章?

您需要查询每篇文章的评论数,然后在注释字段上进行筛选

from django.db.models import Count
Article.objects.annotate(num_comments=Count('comment')).filter(num_comments__gt=10)
您需要使用每篇文章的注释数设置查询集,然后在注释字段上进行筛选

from django.db.models import Count
Article.objects.annotate(num_comments=Count('comment')).filter(num_comments__gt=10)
请参见以下示例:

请参见以下示例:

 Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=1)