2017-04-07 59 views
0

在模型类的声明,有添加父键没有任何限制:Google 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) 

这八九不离十感到奇怪!

回答

0

是的,他们可以 - 父母可以字面上是任何类型的实体(或None - 独立实体,AKA实体组所有者)。

你的例子恰好就是这样一种用法。

至于可用性,它实际上取决于应用程序。如果你觉得它有用,那就是:)如果不是的话 - 你可能不会用它。

例如,您的应用可能还包含企业或学院/大学的实体,这些实体将至少有一个与其关联的子实体。

旁注:

  • 你应该有你的类继承ndb.Model类,使他们的情况下,NDB实体:

    class Address(ndb.Model): 
    
  • 你应该通过父实体在孩子关键创造,而不是母公司本身:

    address1 = Address(parent=employee.key) 
    
+0

啊,是的。我同意附注。不知何故忽略了他们。但是,我要问的问题是,两种不同的同类实体是否可以同时拥有不同的父母? (编辑过这个问题) –

+0

是的 - 这就是答案的真正目的(除了笔记)。 –

相关问题