我通过ID列表查询Django表
hclistofcases = testcase.objects.filter(id__in="[182, 180, 184, 179, 178, 181, 183"))
这段话返回一个queryset,但是这个queryset不是按照列表顺序排列的(例如记录182在前,183在后)。有没有办法确保queryset按照列表顺序返回?我目前正在使用sqlite数据库。
如果能得到任何帮助,将不胜感激。
谢谢。
Grant
我通过ID列表查询Django表
hclistofcases = testcase.objects.filter(id__in="[182, 180, 184, 179, 178, 181, 183"))
这段话返回一个queryset,但是这个queryset不是按照列表顺序排列的(例如记录182在前,183在后)。有没有办法确保queryset按照列表顺序返回?我目前正在使用sqlite数据库。
如果能得到任何帮助,将不胜感激。
谢谢。
Grant
empty = testcase.objects.none()
_ = []
for i in [182, 180, 184, 179, 178, 181, 183]:
_.append(testcase.fiter(id=i))
return empty.union(*_)
.order_by(id)
以获取升序。these_ids = [182, 180, 184, 179, 178, 181, 183]
hclistofcases = []
for item in these_ids:
hclistofcases.append(testcase.objects.filter(id=item))
Python将强制执行列表顺序,但这不是非常高效,因为数据库将为每个ID进行单独的查询。 - tthayer