以下代码将查询数据库两次吗?当然要开始for循环了,但是它是否使用len()查询数据库?我问这个问题是因为我知道Django count()函数会查询数据库。
events = Events.objects.all()
for event in events: #First Query
print(event.name)
length = len(events) #Second Query?
它将仅以documented的形式访问数据库一次>
在新创建的QuerySet中,缓存为空。第一次 评估QuerySet -因此发生数据库查询- Django 将查询结果保存在QuerySet的缓存中,并返回 明确要求的结果(例如,下一个元素, (如果要遍历QuerySet)。 随后的评估 QuerySet重用缓存的结果
。