我的models.py
目前设置如下:
class Topic(models.Model):
topic = models.CharField(max_length = 50)
def __str__(self):
return self.topic
class Comic(models.Model):
...
topic = models.ForeignKey(Topic, blank = True, null = True,
related_name = 'comics')
无论如何,从这个可以理解的是2个漫画可以分享相同的主题,然而,每个漫画只能有一个主题。现在我需要根据与它们关联的Comic对象的数量排序的Topic模型的对象列表。例如,假设我有一个名为Unsorted的主题,它与15个漫画相关联,另一个名为Funny with 5 comics。我希望我的查询集以Unsorted在Funny对象之前的方式排序。
Topic.objects.all().order_by('-comics')
我尝试了这个但是它没有真正起作用,结果没有按正确的方式排序,即使没有错误。任何解决方案?谢谢!
答案 0 :(得分:3)
你可以这样做:
from django.db.models import Count
# ...
Topic.objects.annotate(cc=Count('comic')).order_by('-cc')