我是应用程序引擎的新手,我正试图将两种类型联系在一起,即使在阅读文档之后,我仍然从我认为的关系数据库模型中接近它。
如果我有UserInformation类
class UserInformation(ndb.Model):
username = ndb.UserProperty()
firstname = ndb.StringProperty(required=True)
lastname = ndb.StringProperty(required=True)
telephone = ndb.IntegerProperty()
email = ndb.StringProperty()
然后我想要一本书类,以便用户可以拥有多本书
class Book(ndb.Model):
author = ndb.StringProperty(required=True)
booktitle = ndb.StringProperty(required=True)
如何将两个类与父/子关系链接在一起?是否像
b = Book(parent=UserInformation, key=’some key’, author=’some author’, booktitle=’a great book’)
如果是,我该如何提取密钥?我可以通过
获取IDUsers = UserInformation(UserInformation.username==’some user’).get()
User_key = Users.key.id()
但我似乎无法获得钥匙?
感激不尽的任何帮助
答案 0 :(得分:0)
如果它是一个拥有的关系,那么你的策略是好的。至于访问密钥,您已经在代码中使用了它。
您使用
User_key = Users.key.id()
关键是Users.key
然而,想想你如何使用书籍。如果多人拥有相同的图书,您可能需要考虑为每本图书创建一个规范的图书实体。
然后在用户中你可以
有一个重复的KeyProperty
,它是一个人拥有的书籍的所有键的列表。或
如果他们可以拥有000册书籍,那么你会回到一个拥有的实体(让用户作为父母)。这个实体有一个KeyProperty指向规范的Book实体,可能还有一个标题的副本,因此您不必为摘要列表提取该书。