all()经理的方法只是委托给
get_queryset(),如Django源代码所示:
def all(self): return self.get_queryset()
因此,这只是从Manager中获取QuerySet的一种方法。确保返回的是Manager,这对于确保您正在处理QuerySet而不是Manager是非常方便的
MyModel.objects。
例如,如果要遍历所有项目, 则不能 执行以下操作:
for item in MyModel.objects: # do something with item
因为您无法遍历Manager。但是,
all()返回QuerySet后,您 可以 遍历QuerySet:
for item in MyModel.objects.all(): # do something with item
通常,您绝不应该覆盖
all()。您可以覆盖,
get_queryset()但是此方法 必须 返回QuerySet。
如果您将使用类似
filter()或的过滤器方法
exclude(),则您将已经拥有QuerySet,因为这些方法被代理到QuerySet。所以您不必做类似的事情
all().filter()。



