gpt4 book ai didi

python - 每次访问相关模型时 Django 都会重新查询吗?

转载 作者:行者123 更新时间:2023-12-01 05:16:30 24 4
gpt4 key购买 nike

假设我有一个具有如下外键的模型:

class Foo(models.Model):

bar = models.ForeignKey(Bar)

我在 Foo 上有一个方法,它定义了一个字典,其中包含以下内容:

{'bar_mode': self.bar.mode,
'bar_name': self.bar.name}

如果我使用 MySQL 作为后端,这是否会导致对 Bar 表进行两个单独的查询?或者,从数据库检索 Bar 后,Django 是否会足够聪明(即实现一些简单的短期缓存),只查询 Bar 一次并使用以前的结果?如果不是,最简单的解决方案是将 self.bar 存储在变量中并在整个方法中使用该变量吗?

最佳答案

没有。一旦您第一次访问它,相关实体将被缓存,后续查找将不会再次访问数据库。

请注意,这是每个对象的缓存:如果出于任何原因重新获取 Foo 实例,缓存将丢失,并且对 bar 的调用将导致另一个查询。

另请注意,当您首先查询 Foo 时,可以使用 select_lated 完全消除额外的调用。

关于python - 每次访问相关模型时 Django 都会重新查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092831/

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