Django查询集按_set排序

时间:2011-07-13 02:04:30

标签: python django django-queryset

我有这个型号:

class Person(models.Model):
    name = models.CharField()
    likes = models.ManyToManyField(Image)

class Image(models.Model):
    name = ...
    image = ...

如果我使用[x.person_set.count() for x in Image.objects.all()],我会得到有多少人喜欢每张图片。

现在我需要订购清单。我想要像Image.objects.all().order_by('person_set.count()')

这样的东西

我需要根据用户的喜好来获取所有图像的列表。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

这可以在一个查询中完成您想要的一切(喜欢的数量,并按计数排序)。

from django.db.models import Count
Image.objects.annotate(Count("person")).order_by("person__count")