【问题标题】:Django: Need to check for QuerySet existence before looping through itDjango:在循环之前需要检查 QuerySet 是否存在
【发布时间】:2021-09-21 12:04:36
【问题描述】:

我在几个 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(),但让我们考虑一下这个特殊情况,我不会使用它。

提前感谢您的回答。

【问题讨论】:

    标签: python django django-queryset


    【解决方案1】:

    为什么需要检查?

    if queryset:
        for obj in queryset:
            do_something()
    

    for obj in queryset:
        do_something()
    

    本质上是一样的。如果查询集为空,则永远不会执行循环。否则,它会。

    queryset.exists() 不是一个好主意,因为它会导致 extry db 命中,而您无论如何都会提取数据。

    【讨论】:

    • 这正是我的想法。我问这个是因为我在几个项目中看到过。再次感谢。
    猜你喜欢
    • 2022-11-12
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2013-04-25
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    相关资源
    最近更新 更多