Python 存储用户';朋友';在GAE数据存储中
我正在尝试使用flask和google应用程序引擎制作一个类似facebook的社交网站(而不是facebook应用程序)。我目前正在研究如何在数据存储中存储好友 我希望它有点像facebook,因为一个用户会请求成为另一个人的朋友,一旦被接受,他们就可以看到对方的帖子。到目前为止,在我看来,它的存储方式如下:Python 存储用户';朋友';在GAE数据存储中,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我正在尝试使用flask和google应用程序引擎制作一个类似facebook的社交网站(而不是facebook应用程序)。我目前正在研究如何在数据存储中存储好友 我希望它有点像facebook,因为一个用户会请求成为另一个人的朋友,一旦被接受,他们就可以看到对方的帖子。到目前为止,在我看来,它的存储方式如下: class Friendship(db.Model): user1 = db.ReferenceProperty(User) user2 = db.ReferencePr
class Friendship(db.Model):
user1 = db.ReferenceProperty(User)
user2 = db.ReferenceProperty(User)
request_accepted = db.BooleanProperty()
但我看到了,以及许多对许多的例子,这让我感到困惑。我以前只使用过像mysql这样的关系数据库,所以我真的不知道它们在做什么,但这似乎很重要
如果有人知道我应该做什么,请告诉我,我将不胜感激。如果您需要我的完整models.py
源代码,请告诉我
提前谢谢 我认为你所尝试的没有什么好混淆的。在您的模型中,友谊类有两个类型为user属性的引用
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将引用某个用户对象。并将集合名称添加到引用属性中以避免混淆。
要了解更多信息,请查看此处我建议您将userid也存储在友谊模型中,因为这将有助于相应地过滤数据。。。否则,您需要爬网数据存储以找到共同的朋友…:D 和“When”实体也可以按排序顺序显示朋友…:)
这是另一个门户网站还是facebook应用程序?对不起,我应该澄清一下。这不是一个facebook应用程序,它是一个从头开始的社交网站。我不认为你的问题中给出的模型有任何问题,因为你打算把它放在什么地方。好的,我认为可能有更好的方法来做。与此相关的一点是,在运行app engine测试服务器时,我在
类友谊
打开的行上得到以下错误:DuplicatePropertyError:class用户已经设置了属性友谊
@tominated,这是因为您在引用属性中没有提到集合名称。默认情况下,用户将拥有名为name_set的属性。这里的名称只是它所引用的模型的名称。当您两次引用用户模型时,它会引发重复的propertyerror。
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()