Как я могу отфильтровать объекты по количеству ссылок на них? - PullRequest
1 голос
/ 02 марта 2012

Допустим, я создаю систему статей / комментариев следующим образом:

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

class Comment(models.Model):
    article = ForeignKey(Article)
    content = models.TextField()

Как мне отфильтровать Article.objects, чтобы найти статьи, содержащие более десяти комментариев?

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Вам необходимо аннотировать ваш набор запросов с количеством комментариев для каждой статьи, а затем фильтровать по аннотированному полю.

from django.db.models import Count
Article.objects.annotate(num_comments=Count('comment')).filter(num_comments__gt=10)
1 голос
/ 02 марта 2012

См. Этот образец из https://docs.djangoproject.com/en/dev/topics/db/aggregation/#aggregating-annotations:

 Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=1)
1 голос
/ 02 марта 2012
from django.db.models import Count

Article.objects.annotate(comment_count=Count('comment')).filter(comment_count__gte=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...