【发布时间】:2021-07-08 00:28:44
【问题描述】:
假设我有一个列表
items = [1,2,5,1,2,1]
我想要实现的是在列表中获取所有示例对象并保持顺序和重复。如下:
def get_all_keep_order_and_duplicates():
return [Example.objects.get(pk=pk) for pk in items]
我的问题是,有没有办法更有效地做到这一点,只需一个查询而不是单独获取每个项目?
到目前为止,我已经尝试过以下保持订单但不返回重复项的方法:
def get_all_keep_order():
return Example.objects.filter(pk__in=items).order_by(
Case(*[When(pk=pk, then=count) for count, pk in enumerate(items)])
)
【问题讨论】: