您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django按特定顺序从ID数组获取QuerySet

Django按特定顺序从ID数组获取QuerySet

我认为你不能在数据库级别强制执行该特定命令,因此你需要使用python来代替。

id_list = [1, 5, 7]
objects = Foo.objects.filter(id__in=id_list)

objects = dict([(obj.id, obj) for obj in objects])
sorted_objects = [objects[id] for id in id_list]

这将建立一个以id为键的对象字典,因此在建立排序列表时可以轻松检索它们。

从Django 1.8开始,你可以执行以下操作:

from django.db.models import Case, When

pk_list = [10, 2, 1]
preserved = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(pk_list)])
queryset = MyModel.objects.filter(pk__in=pk_list).order_by(preserved)
Go 2022/1/1 18:23:30 有310人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶