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')

これにより、子供の数の順に一連のビデオが表示されますが、これはプライベートとパブリックの両方の子供をカウントします。public の子のみをカウントするにはどうすればよいですか?

私はこのようなものが欲しい:

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

もちろん、そのままでは機能しません

4

2 に答える 2

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 に答える
0

うまくいったのは:

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

于 2013-03-23T23:02:44.660 に答える