在GAE数据存储中存储用户“朋友”
我正在尝试用Flask和谷歌应用引擎做一个类似Facebook的社交网站(不是Facebook的应用),纯粹是为了好玩。目前我在研究如何在数据存储中保存朋友关系。
我想让它有点像Facebook,用户可以请求成为别人的朋友,一旦对方接受,他们就可以看到彼此的动态。到目前为止,我觉得可以这样存储朋友关系:
class Friendship(db.Model):
user1 = db.ReferenceProperty(User)
user2 = db.ReferenceProperty(User)
request_accepted = db.BooleanProperty()
但是我看到在StackOverflow上的这个帖子,还有在谷歌的数据存储文档中的多对多示例,这让我有点困惑。我之前只用过像MySQL这样的关系型数据库,所以我不太明白他们在说什么,但这似乎很重要。
如果有人知道我该怎么做,请告诉我,我会非常感激。如果你需要我的完整models.py
源代码,请告诉我。
提前谢谢你们!
2 个回答
0
我建议你在好友模型中也存储用户ID,这样在过滤数据时会很有用……否则你就得去查找你的数据存储,才能找到共同的朋友……:D
还有“时间”这个实体,可以用来按顺序显示朋友…… :)
class Friendship(db.Model):
user1 = db.ReferenceProperty(User)
user2 = db.ReferenceProperty(User)
user1id = db.StringProperty()
user2id = db.StringProperty()
request_accepted = db.BooleanProperty()
when = db.DateTimeProperty()
0
我觉得你所尝试的没有什么好困惑的。在你的模型中,友谊类有两个用户类型的引用属性。
freindship=FriendShip()
friendship.user1=#assign a key of user or user object
friendship.user2=#assign a key of user or user object
friendhsip.put()
这里的user1和user2将指向某个用户对象。为了避免混淆,建议给你的引用属性添加一个集合名称。想了解更多,可以看看这里 在App Engine中的建模