在声明模型类的过程中,添加父键没有任何限制:
class Employee():
name = ndb.StringProperty(required=True)
class Address():
city = ndb.StringProperty(required=True)
class Education():
college = ndb.StringProperty(required=True)
我们添加祖先路径的当前方式是在写入数据存储区期间,如下所示
employee = Employee()
employee.put()
address1 = Address(parent=employee)
所以,没有什么可以阻止一个人做:
address1 = Address(parent=employee)
address2 = Address(parent=education)
哪种感觉很奇怪!
答案 0 :(得分:0)
是的,他们可以 - 父母可以真正地成为任何类型的实体(或None
- 独立实体,AKA实体组所有者)。
您的示例就是这种用法。
至于可用性,它实际上取决于应用程序。如果你发现它很有用,那就是:)如果没有 - 你可能不会使用它。
例如,您的应用可能还有商家或学院/大学的实体,这些实体都至少有一个Address
子实体与之关联。
附注:
您应该让您的类继承ndb.Model
类以使其实例成为ndb实体:
class Address(ndb.Model):
您应该在子项创建中传递父实体的键,而不是父实体本身:
address1 = Address(parent=employee.key)