与以下风格几乎相同:Django以特定顺序从id数组中获取QuerySet。我试过 https://stackoverflow.com/a/37648265/4810639
但是我的 id 列表很大(> 50000(,qs = Foo.objects.filter(id__in=id_list)
和qs = qs.order_by(preserved)
都在压力下屈服。
注意:由于我正在覆盖特定的 django 方法,我需要一个查询集,因此任何返回列表的内容都不起作用。
编辑:为了回应评论,我特别覆盖了管理员中的get_search_results()
。我的搜索引擎返回与查询匹配的模型id
。但是get_search_results()
需要返回一个查询集。因此,大量的id
。
我通过创建一个FakeQueryset
类来实现这一点,该类具有足够常规查询集的功能,它能够像一个查询集一样运行。然后,当我需要显示它时,我会将其交给自定义分页器,该分页器一次只能从数据库中提取几id
秒。鸭子打字赢了!