gpt4 book ai didi

django - 如何不在查询中订购 pk 列表?

转载 作者:行者123 更新时间:2023-12-02 00:18:08 24 4
gpt4 key购买 nike

我有一个 pk 列表,我想按照我的列表定义的相同顺序获得结果......但是元素的顺序正在改变。谁能帮帮我?

print list_ids

[31189, 31191, 31327, 31406, 31352, 31395, 31309, 30071, 31434, 31435]

obj_opor=Opor.objects.in_bulk(list_ids).values()

for o in obj_oportunidades:
print o

31395 31435 31434 30071 31309 31406 31189 31191 31352 31327

这个对象应该用在模板中向用户显示一些结果......但是你怎么看,顺序与原来的list_ids不同

最佳答案

如果在 SQL 中有这个功能就好了——按已知的值列表排序。

相反,您可以做的是:

obj_oportunidades=Opor.objects.in_bulk(list_ids).values()

all_opor = []
for o in obj_oportunidades:
print o
all_opor.append(o)

for i in list_ids:
if i in all_opor:
print all_opor.index(i)

缺点是您必须先获取所有结果行并存储它们,然后才能按照您想要的顺序获取它们。 (all_opor 可以是上面的字典,表记录存储在值中,PKeys 作为字典键。)

其他方式,使用 (Sort_Order, Pkey) 创建一个临时表并将其添加到查询中:

Sort_Order        PKey
1 31189
2 31191
...

因此,当您对 Sort_Order 和 Opor.objects 进行排序时,您将按照您指定的顺序获得 Pkeys。

关于django - 如何不在查询中订购 pk 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12228889/

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