同一类型的不同实体可以同时在Google ndb中拥有不同的父母吗?如果是,这有什么用?

时间:2017-04-07 20:13:33

标签: google-app-engine app-engine-ndb

在声明模型类的过程中,添加父键没有任何限制:

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)

哪种感觉很奇怪!

1 个答案:

答案 0 :(得分:0)

是的,他们可以 - 父母可以真正地成为任何类型的实体(或None - 独立实体,AKA实体组所有者)。

您的示例就是这种用法。

至于可用性,它实际上取决于应用程序。如果你发现它很有用,那就是:)如果没有 - 你可能不会使用它。

例如,您的应用可能还有商家或学院/大学的实体,这些实体都至少有一个Address子实体与之关联。

附注:

  • 您应该让您的类继承ndb.Model类以使其实例成为ndb实体:

    class Address(ndb.Model):
    
  • 您应该在子项创建中传递父实体的,而不是父实体本身:

    address1 = Address(parent=employee.key)