关于 Django 的关键字“lazy”

The keyword “lazy” with respect to Django

谁能给我解释一下“懒惰”的意思。 看不懂Django中“懒”这个词的意思

例如。 在懒惰的翻译主题中。

这些函数存储对字符串的惰性引用 要么 懒惰后缀

我在很多编程语言中多次遇到这个词,但我听不懂。

这意味着直到您需要它的结果时才会对其进行评估。

为例
a = iter([1,2,3])

您知道您有一个包含 1、2、3 的列表,但您不会从中获取任何值,除非您需要在某些事情中使用它们。

for value in a:
      print(a)

特别是对于 django,它通常在涉及 ORM 进行查询时执行此操作。

你可以写

 n = MyObject.objects.filter(x='foo')

但您以后可能希望将此查询与其他附加过滤器链接起来

if x:
     n = n.filter(y="bar")

因此,为了避免此处发生 2 次查询,django 不会尝试从数据库中获取对象,直到您开始尝试对查询集执行某些涉及使用从查询返回的对象的操作

for db_item in n:
     print(db_item)