首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个子/父级

多个子/父级
EN

Stack Overflow用户
提问于 2015-08-25 02:12:13
回答 1查看 412关注 0票数 0

我想要交友系统有这样的db模型:

代码语言:javascript
运行
复制
class Users(ndb.Model):
    username = ndb.StringProperty(required = True)
    bio = ndb.StringProperty()

class friend_list(ndb.Model):
    list = ndb.StringProperty(repeated=True)

class friend_pending(ndb.Model):
    list = ndb.StringProperty(repeated=True)

friend_pending是尚未被接受的朋友的典范。而friend_list是被接受的朋友的模型。

我想让friend_list和friend_pending都成为用户实体的子实体。有可能吗?

如果不可能的话,下面是第二种方法:

代码语言:javascript
运行
复制
    class Users(ndb.Model):
        username = ndb.StringProperty(required = True)
        bio = ndb.StringProperty()

    class friend_list(ndb.Model):
        user_username = ndb.StringProperty(required = True)
        list = ndb.StringProperty(repeated=True)

    class friend_pending(ndb.Model):
        user_username = ndb.StringProperty(required = True)
        list = ndb.StringProperty(repeated=True)

如果两者都有可能,哪一个对成本和性能更好?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 03:17:14

我想让friend_list和friend_pending都成为用户实体的子实体。有可能吗?

是。创建实体时,可以使用“父”参数为实体指定父(或父)。

谷歌的实体钥匙部分很好地介绍了这一点。

示例:

代码语言:javascript
运行
复制
#Create User entity
#This code assumes you're using GAE's built-in user's class
user = users.User("Albert.Johnson@example.com")
user.put()

#Create a friend list and set its parent to the user we create above
friend_list = Friend_List(parent=user)

#Save to datastore
friend_list.put()​

请记住,GAE中的User类是专门定义的,并且有您需要确认的附加功能。请参阅文档这里

如果两者都有可能,哪一个对成本和性能更好?

我不能肯定地说,因为我不知道您将如何使用这些模型,但在大多数情况下(可能全部),您的第一种方法将更有效。

最后,Datastore模型的正确命名约定是将第一个字母大写。例如,您的朋友列表类应该是"Friend_List“。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32194505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档