首页 > Django OneToOneField 的效率问题

Django OneToOneField 的效率问题

假如用户模型中有个 Person 模型,它通过属性 user=models.OneToOneField(User) 与框架的 User 建立起一对一映射。在使用时 user 是一个 User 对象,user.person 可以获得对应的 Person 对象。

我想知道 user.person 何时会执行数据库 IO。因为我在程序了为了方便会多次调用 user.person 来获取 Person 对象,但是我不知道是否每次调用都会执行一次 IO 呢?如果这样的话,那就会非常消耗服务器资源。这时就应该考虑获得一个 person=user.person,然后每次都去调用 person 了。请高手赐教

正好也遇到了这个问题,搜了下没人解答出来的样子,来这里问一下试试。


Django那个教程的书里面写的很清楚。user=models.OneToOneField(User)这个当中的models就是Django对于数据库数据的一个建模。这个模型就是一个对象,在python当中。当你对这个模型中的数据进行操作的时候,是通过这个模型进行处理的。
所以说当你使用models的函数的时候就会进行一次对于数据库的i/o操作。
你多次调用user.persion的值,但是不会每次对于数据库进行查询操作的,除非你每一次都是通过user.object.all()这种方法从数据库取出数据的。
换句话说,在你和数据库之间还有一层models层。

【热门文章】
【热门文章】