Django QuerySets有多懒?

问题描述 投票:0回答:1

以下代码将查询数据库两次吗?当然要开始for循环了,但是它是否使用len()查询数据库?我问这个问题是因为我知道Django count()函数会查询数据库。

events = Events.objects.all()   

for event in events:         #First Query
    print(event.name)

length = len(events)         #Second Query?
django django-models django-queryset
1个回答
1
投票

它将仅以documented的形式访问数据库一次>

在新创建的QuerySet中,缓存为空。第一次 评估QuerySet -因此发生数据库查询- Django 将查询结果保存在QuerySet的缓存中,并返回 明确要求的结果(例如,下一个元素, (如果要遍历QuerySet)。 随后的评估 QuerySet重用缓存的结果

© www.soinside.com 2019 - 2024. All rights reserved.