在GAE数据存储中存储用户“朋友”

1 投票
2 回答
573 浏览
提问于 2025-04-16 15:11

我正在尝试用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中的建模

撰写回答