gpt4 book ai didi

python - Django 复杂排序

转载 作者:行者123 更新时间:2023-11-28 17:41:11 25 4
gpt4 key购买 nike

我有一个 Django 模型 Document,它可以有指向它的 Vote 对象。 Vote 上有一个名为 score 的整数字段。

我想根据指向文档且 score=1Vote 对象的数量对文档的查询集进行排序。即,获得最多赞成票的文档应该是查询集中的第一个文档。

Django 可以吗?怎么办?

最佳答案

这是一个注释的工作。

from django.db.models import Count
Document.objects.filter(score=1).annotate(
positive_votes=Count('vote__count')).order_by('positive_votes')

编辑

如果不进行过滤,实际上没有办法做到这一点,因为这是底层数据库操作的工作方式。但是一种不太好的方法是对原始文档中未包含的所有文档进行单独查询,并将两个查询集链接在一起:

positive_docs = <query from above>
other_docs = Document.objects.exclude(id__in=positive_docs)
all_docs = itertools.chain(positive_docs, other_docs)

只要您没有数百万文档,这就可以工作,但会破坏分页之类的东西。

关于python - Django 复杂排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23983751/

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