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 数据库命中,而无论如何您都会提取数据。