创建引用属性时如何访问数据存储一次?

时间:2014-03-21 08:48:36

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

我正在使用Django和Google App Engine。在某些时候,我创建了两个对象。其中一个对象是另一个对象的引用属性。目前,我正在做

b = models.B()
b.put()
a.reference = b
a.put()

理想情况下,我只想使用db.put([a, b]),但对象b在将其分配给对象a的属性时缺少密钥。

在将对象b实际放入数据存储之前,我能以某种方式给对象一个密钥吗?

1 个答案:

答案 0 :(得分:2)

您可以使用B(key=ndb.Key(B, 'custom_key'))等自定义键,这样就可以引用此属性,即使它尚不存在。

如果您希望使用数字键,请先使用custom_key = B.allocate_ids(1)

https://developers.google.com/appengine/docs/python/ndb/entities#numeric_keys

修改

对于db,你需要这样的东西:(虽未测试)

start_batch, end_batch = db.allocate_ids(db.Key.from_path('B', 1), 1)
assert start_batch == end_batch
b = models.B(key_name=start_batch)
a.reference = db.Key.from_path('B', start_batch)
db.put([a, b])