gpt4 book ai didi

python - 如何按相关对象计数对查询集进行排序?

转载 作者:行者123 更新时间:2023-11-30 23:04:42 24 4
gpt4 key购买 nike

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

无论如何,从这里可以理解,两部漫画可以共享相同的主题,但是,每部漫画只能有一个主题。现在我需要一个 Topic 模型的对象列表,根据与其关联的 Comic 对象的数量排序。例如,假设我有一个名为“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')

关于python - 如何按相关对象计数对查询集进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com