加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在没有多个数据库请求的情况下在Django中多次调用外键

发布时间:2020-12-20 11:04:25 所属栏目:Python 来源:网络整理
导读:假设我有一个类Child通过FK链接到另一个类Parent.现在让我们说我有一段代码在模板中做这样的事情 td{{ child.parent.name }}/tdtd{{ child.parent.age}}/tdtd{{ child.parent.address }}/td 我的第一个问题是,Django会去数据库并读取三次Parent实体吗?我的
假设我有一个类Child通过FK链接到另一个类Parent.现在让我们说我有一段代码在模板中做这样的事情

<td>{{ child.parent.name }}</td>
<td>{{ child.parent.age}}</td>
<td>{{ child.parent.address }}</td>

我的第一个问题是,Django会去数据库并读取三次Parent实体吗?我的第二个问题是:如果是,那么多次不读它的最佳做法是什么?我的意思是我知道我可以在这个块之前声明一个对象并将它设置为等于child.parent但是还有另一种方法吗?

解决方法

不,Django只会命中一次DB,下次调用将使用缓存属性并且不会要求访问DB,您可以查看相关的 part文档.

但是你可以通过使用select_related方法来实现这一点,在这种情况下,即使第一次调用也不会命中DB,因为child.parent将被预先缓存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读