代码之家  ›  专栏  ›  技术社区  ›  İlkem Çetinkaya

django筛选器只获取最后一项

  •  0
  • İlkem Çetinkaya  · 技术社区  · 7 年前

    在下面的代码中,我想用选中的id从复选框中筛选出变量为“item”的值,并且还想得到变量为“pfast_type”的列。 问题是我只得到最后一个项目。我没有得到完整的列表。我做错什么了?

    elif pfast_type and item:
    object_list = FP.objects.filter(pk__in=[item]).values('FP_Item',pfast_type)
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Victor Miroshnikov    7 年前

    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])

        2
  •  1
  •   RemcoGerlich    7 年前

    我不知道里面是什么 item 但是 [item] 是长度为1的列表。所以 pk__in=[item] 只能匹配一个主键(如果有)。

    只能有零个或一个与筛选器匹配的fp对象,它们都将返回。