如何解决Django:预取相关:for循环:根据我们对for循环的调用方式,sql调用的数量有所不同
在django中,我试图了解预取:
预取后,我有两个for循环方案
symbollist = SymbolList.objects.prefetch_related('some_related_name')[0:10]
for i in range(0,10):
print(symbollist[i].some_related_name)
现在它调用sql N + 1次
哪里
symbollist = SymbolList.objects.prefetch_related('some_related_name')[0:10]
for symbol in symbollist:
print(symbol.some_related_name)
这只会调用两个sql
为什么
解决方法
您将symbol_list
Queryset限制为10个对象,并使用prefetch_related为其缓存相关数据
但是您要遍历数据库中的所有对象(通知计数)
for i in range(0,symbollist.count()):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。