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


无论如何,从这可以理解的是,两个漫画可以共享同一主题,但是,每个漫画只能有一个主题。现在,我需要根据与之关联的漫画对象的数量来排序主题模型的对象的列表。例如,假设我有一个名为Unsorted的主题,该主题与15个漫画相关联,另一个主题为Funny的主题与5个漫画相关联。我希望对查询集进行排序,以使“未排序”排在“有趣”对象之前。

Topic.objects.all().order_by('-comics')


我尝试了一下,但是它没有真正起作用,即使没有错误,结果也没有正确排序。那么有什么解决办法吗?谢谢!

最佳答案

你可以这样做:

from django.db.models import Count

# ...

Topic.objects.annotate(cc=Count('comic')).order_by('-cc')

07-24 09:52
查看更多