首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化此查询,选择pk前后的行

优化此查询,选择pk前后的行
EN

Stack Overflow用户
提问于 2011-07-06 12:35:01
回答 1查看 60关注 0票数 1

我尝试在给定的主键之前和之后选择2行。到目前为止,这是我的解决方案,但似乎效率低下。有没有办法对此进行优化?

代码语言:javascript
复制
images = Media.objects.filter(owner=user_object) #select objects by a user
id_list = list(images.values_list('id', flat=True)) #get the primary keys for the objects
idx = id_list.index(image.id) #get the index of the image

#TODO check for index error
next_ids = id_list[idx+1:idx+3] #get ids of next 2 objects 
prev_ids = id_list[idx-3:idx-1] #get ids of previous 2 objects

#using the IDs, get the objects
next_objs = Media.objects.filter(Q(pk=next_ids[0]) | Q(pk=next_ids[1]))
prev_objs = Media.objects.filter(Q(pk=prev_ids[0]) | Q(pk=prev_ids[1]))

这是可行的,但我正在寻找更有效的方法,也许可以使用django的查询集的更高级的技术

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-06 12:46:22

获取ID小于或大于您的ID的行,并将其限制为2行。

代码语言:javascript
复制
next_objs = Media.objects.filter(id__gt=image.id).order_by('id')[:2]
prev_objs = Media.objects.filter(id__lt=image.id).order_by('-id')[:2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6591599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档