Django:需要在循环之前检查 QuerySet 是否存在
Django: Need to check for QuerySet existence before looping through it
我在几个 Django 项目中观察到以下常见模式:
queryset = MyModel.objects.filter(...)
if queryset:
for obj in queryset:
do_something()
我意识到通过检查 queryset Django 已经填充了它的缓存所以我们在执行 for 时不会再次访问数据库循环。
根据文档,查询集在循环时也会被评估。
所以我的问题是:
Is there any benefit in including the queryset check before the loop?
我也知道 exists(),但考虑到这个特殊情况,我不会使用它。
预先感谢您的回答。
为什么要检查?
if queryset:
for obj in queryset:
do_something()
和
for obj in queryset:
do_something()
本质上是一样的。如果查询集为空,则永远不会执行循环。否则,它会。
queryset.exists()
不是一个好主意,因为它会导致 extry 数据库命中,而无论如何您都会提取数据。
我在几个 Django 项目中观察到以下常见模式:
queryset = MyModel.objects.filter(...)
if queryset:
for obj in queryset:
do_something()
我意识到通过检查 queryset Django 已经填充了它的缓存所以我们在执行 for 时不会再次访问数据库循环。
根据文档,查询集在循环时也会被评估。
所以我的问题是:
Is there any benefit in including the queryset check before the loop?
我也知道 exists(),但考虑到这个特殊情况,我不会使用它。
预先感谢您的回答。
为什么要检查?
if queryset:
for obj in queryset:
do_something()
和
for obj in queryset:
do_something()
本质上是一样的。如果查询集为空,则永远不会执行循环。否则,它会。
queryset.exists()
不是一个好主意,因为它会导致 extry 数据库命中,而无论如何您都会提取数据。