Django Filter只获取最后一项

时间:2018-06-06 09:53:38

标签: django list filter

我制作了下面的代码,我希望从复选框值为“item”的复选框值中选择id来过滤,我还希望得到变量为“pfast_type”的列。 问题是我只得到最后一项。我没有得到整个清单。我做错了什么?

elif pfast_type and item:
object_list = FP.objects.filter(pk__in=[item]).values('FP_Item',pfast_type)

2 个答案:

答案 0 :(得分:2)

After a short investigation in chat, we found out the cause:

问题是item变量已通过:request.GET.get("fastedit")解决。最初的目的是将多个值传递给fastedit查询参数。但是,request.GET.get仅返回最后一个。

为了解决问题,我们需要使用request.GET.getlist("fastedit")并将已解决的列表直接传递给filter(pk__in=item),而不必像原始代码filter(pk__in=[item])中那样包含额外的列表

答案 1 :(得分:1)

我不知道item中的内容,但[item]是长度为1的列表。因此pk__in=[item]只能匹配一个主键(如果有)。

只有零个或一个FP对象与过滤器匹配,并且它们都被返回。