python ndb类相互引用

时间:2015-02-24 22:01:12

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

我有两个班级:

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

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

将类名放在引号中会出错。

实现它的合理方法是什么,这使得代码封装完好无损?

2 个答案:

答案 0 :(得分:2)

您可以在定义模型后指定属性。请参阅_fix_up_properties doc strings 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()

答案 1 :(得分:1)

您可能希望使用ndb.KeyProperty代替ndb.StructuredProperty。使用前者,让两个类相互引用是完全可以接受的。