谷歌数据存储 - 它是否延迟加载?

时间:2010-05-19 17:03:30

标签: python google-app-engine google-cloud-datastore

如果我有一个带有订单列表的Customer对象,则使用db.ReferenceProperty

声明

过了一段时间我可能会在那里有大量的订单,如果我拉客户对象,我会有拉动整套订单的危险吗?

1 个答案:

答案 0 :(得分:6)

是的,db.ReferenceProperty字段是懒惰加载的。来自the docs

  

ReferenceProperty自动引用和取消引用模型实例作为属性值:可以直接将模型实例分配给ReferenceProperty,并使用其键。可以将ReferenceProperty值用作模型实例,并且将获取数据存储区实体,并在以这种方式首次使用时创建模型实例。未触及的引用属性不会查询不需要的数据。

所以,例如:

# Any reference properties not loaded yet
customer = Customer.get_by_id(1)
print customer.name
print customer.address

# Assuming customer.order is a ReferenceProperty, now is when it
# would be loaded from the datastore.
print customer.order.created_at