如何正确地在Django中链接查询集

时间:2016-09-16 11:11:30

标签: python django

使用下面的示例,我尝试使用查询集并将/ chain过滤器附加在一起。根据我的理解,最后queryset.count()应该只有一个实例,但它始终包含原始的10个实例。

上一个queryset.count()的预期输出为1:

# Set a default queryset.
def get_queryset(self, *args, **kwargs):
    queryset = super(UserMixin, self).get_queryset(*args, **kwargs)
    queryset.count() # 10 instacnes
    queryset.filter(id=1)
    queryset.count() # 10 instacnes excpeted 1

我可以通过以下方式解决这个问题:

queryset = queryset.filter(id=1)

这是正确的方法还是有一种方法可以在我可以添加查询集对象的地方正确链接它们?

1 个答案:

答案 0 :(得分:3)

您永远不会将过滤器分配给任何内容,因此它不会更新它

 queryset = queryset.filter(id=1)

是的,这是正确的方法,因为您正在创建新查询,否则您需要在上一次过滤器调用结束时调用计数