在实体保存到ndb之前通过其键引用实体

2024-05-08 12:03:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够在创建两个实体时将一个类的实体关联到另一个实体(一个实体将另一个实体作为其父实体,另一个实体将有一个键指向另一个实体)。似乎我无法在实体保存到数据存储之前获取它的密钥。有没有什么方法可以在不需要保存其中一个实体两次的情况下实现上述目的?在

示例如下:

class A(ndb.Model):
    key_of_b = ndb.KeyProperty(kind='B')

class B(ndb.Model):
    pass

我要做的是:

^{pr2}$

如果在保存实体之前键没有被分配,我是否可以自己构造它?有什么方法可以实现这一点,或者唯一的解决方案是将其中一个实体保存两次?在


Tags: of数据方法key目的实体示例model
1条回答
网友
1楼 · 发布于 2024-05-08 12:03:09

您可以使用命名键执行此操作,但必须确保可以使用唯一键命名两个实体:

# It is possible to construct a key for an entity that does not yet exist.
keyname_a = 'abc'
keyname_b = 'def'
key_a = ndb.Key(A, keyname_a)
key_b = ndb.Key(A, keyname_a, B, keyname_b)

a = A(id=keyname_a)
a.key_of_b = key_b
b = B(id=keyname_b, parent=key_a)

a.put()
b.put()

但是,我建议您考虑一下为什么首先需要key_of_b属性。如果只将A设置为B的父级,则始终可以从A导航到{},反之亦然:

^{pr2}$

这也为您提供了在A和{}之间创建一对多关系的机会。在

相关问题 更多 >