gpt4 book ai didi

python - 如何链接 Django 查询集以保留单个顺序

转载 作者:太空狗 更新时间:2023-10-29 17:32:51 25 4
gpt4 key购买 nike

我想在 Django 中附加或链接几个查询集,保留每个查询集的顺序(而不是结果)。我正在使用第三方库对结果进行分页,它只接受列表或查询集。我试过这些选项:

查询集连接:不保留单个查询集中的顺序,所以我不能使用它。

result = queryset_1 | queryset_2

使用 itertools:在链对象上调用 list() 实际上会评估查询集,这可能会导致大量开销。不是吗?

result = list(itertools.chain(queryset_1, queryset_2))

你觉得我应该怎么走?

最佳答案

此解决方案可防止重复:

q1 = Q(...)
q2 = Q(...)
q3 = Q(...)
qs = (
Model.objects
.filter(q1 | q2 | q3)
.annotate(
search_type_ordering=Case(
When(q1, then=Value(2)),
When(q2, then=Value(1)),
When(q3, then=Value(0)),
default=Value(-1),
output_field=IntegerField(),
)
)
.order_by('-search_type_ordering', ...)
)

关于python - 如何链接 Django 查询集以保留单个顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18235419/

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