python ndb 类 相互引用

python ndb classes that reference each other

我有两个 classes:

class A(ndb.Model):
    first_prop = ndb.StructuredProperty(B)

class B(ndb.Model):
    second_prop = ndb.StructuredProperty(A)

将 class 名称放在引号中会出错。

实现它的合理方法是什么,它能保持代码封装完好无损?

您可能想使用 ndb.KeyProperty 而不是 ndb.StructuredProperty。使用前者,完全可以接受两个 类 相互引用。

您可以在 定义模型后分配 属性 。请参阅 _fix_up_properties 文档字符串 here

class A(ndb.Model):
  pass

class B(ndb.Model):
  pass

A.first_prop = ndb.StructuredProperty(B)
B.second_prop = ndb.StructuredProperty(A)
A._fix_up_properties()
B._fix_up_properties()