您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django ORM-objects.filter()vs.objects.all()。filter()-哪个是首选?

Django ORM-objects.filter()vs.objects.all()。filter()-哪个是首选?

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

Go 2022/1/1 18:37:37 有361人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶