Python 切片queryset时无法唯一获取django筛选对象
我正在一个电子商务网站的项目展示页面上工作。因此,假设站点有10个项目,现在我每次需要获取2个项目,我们需要使用之前获取的第二个元素的最后一个索引和最后一个价格获取项目。因此获取记录的JSON如下所示Python 切片queryset时无法唯一获取django筛选对象,python,json,django,Python,Json,Django,我正在一个电子商务网站的项目展示页面上工作。因此,假设站点有10个项目,现在我每次需要获取2个项目,我们需要使用之前获取的第二个元素的最后一个索引和最后一个价格获取项目。因此获取记录的JSON如下所示 { "last_price": 6000, "last_index": 12 } { "last_price": 6000, "last_index": 0 } 因此,当项目列表页面第一次打开时,JSON会出现如下情况 { "last_price": 6
{
"last_price": 6000,
"last_index": 12
}
{
"last_price": 6000,
"last_index": 0
}
因此,当项目列表页面第一次打开时,JSON会出现如下情况
{
"last_price": 6000,
"last_index": 12
}
{
"last_price": 6000,
"last_index": 0
}
在django端,我正在发出这个查询
if params['last_index'] == 0:
item_list = queryset.order_by('-price_val').filter(price_val__lte=params['last_price'])[:2]
elif params['last_index'] > 0:
item_list = queryset.order_by('-price_val').filter(price_val__lte=params['last_price']).filter(~Q(pk=params['last_index']))[:2]
现在这10件商品的价格如下
{0:100, 1:200, 2:300, 3:400, 4:900, 5:1200, 6:300,7:100, 8:500 9:200 }
现在,当django订购它订购的元素时
[5,4,8,3,6,2,9,1,7,0]
并在第一次到达API时将该项分为两个部分获取
[5,4]
[8,3]
[6,2]
[9,1]
[7,0]
现在,当它到达第三组时,它只会复制那些值,因为它发现
最后的价格相同,所以它会复制记录。我找不到任何来源来解决这个问题,如果有人以前这样做过,请让我知道。粗略地说,您需要同时订购和筛选:
item_list = queryset\
.order_by('-price_val', 'pk')\
.filter(
Q(price_val__lt=params['last_price']) |
Q(price_val=params['last_price'], pk__gt=params['last_index'])
)[:2]
当你说“set”时,你的意思是这是在循环中吗?@Ringil是的,我是指每次迭代的项目感谢Anentropic,但它不能解决我的问题,假设id=20的元素有值200,id=3的元素有值1000,那么它将不会获取记录3,因为我们已经使用pk\u gt=params['last\u index']