gpt4 book ai didi

django - Django(和其他 MVC/ORM)中的延迟加载关系

转载 作者:行者123 更新时间:2023-12-02 03:52:27 25 4
gpt4 key购买 nike

有兴趣了解如何在 Django 等框架中实现延迟加载。何时决定执行连接?有没有办法在 Django 中强制急切加载?有时您需要强制 Django 预先加载吗?

最佳答案

一般的答案是,当您实际请求某些记录时,Django 会决定执行查询。最常见的是,这意味着迭代查询集(for record in queryset:)或使用 list() 内置函数将查询集转换为列表。

参见When QuerySets are evaluated从官方文档中获取更多细节。

它通过在 django/db/models/query.py 中定义一个名为 QuerySet 的类来实现此目的,其中包含 __repr__ 等特殊方法>、__getitem____iter__ 已编码以执行正确的操作。

如果您需要强制预先加载,只需在查询集上运行内置的 Python 列表函数,例如:

qs = SomeModel.objects.all()
ql = list(qs)

list() 的调用将执行数据库查询并将所有对象加载到内存中。您需要执行此操作的情况应该很少见,但一种情况是您需要在模板中的多个位置使用查询结果。转换为列表并在模板上下文中传递列表将仅执行一次查询,而不是对模板中迭代的每个位置执行一次查询。

关于django - Django(和其他 MVC/ORM)中的延迟加载关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com