0

我有这种情况

class Video(models.Model):
    public = models.BooleanField()
    parent = models.ForeignKey('self', related_name='children')

我想获取按他们拥有的公开孩子数量排序的视频列表。

我可以做类似的事情:

video.objects.annotate(children_count=Count('children')).order_by('children_count')

这给了我一组按孩子数量排序的视频 - 但是这包括私人和公共孩子。我如何只计算公共儿童?

我想要这样的东西:

video.objects.annotate(children_count=Count('children' where children.public=True)).order_by('children_count')

这当然不能按原样工作

4

2 回答 2

0

起作用的是:

Video.objects.filter(children__public=True).annotate(children_count=Count('children')).order_by('children_count')

于 2013-03-23T23:02:44.660 回答
0

怎么样

Video.objects.filter(public=True).
annotate(children_count=Count('children')).order_by('children_count')

在此处阅读更多信息:https ://docs.djangoproject.com/en/dev/topics/db/aggregation/#aggregations-and-other-queryset-clauses

于 2013-03-23T20:33:22.470 回答