Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 存储用户';朋友';在GAE数据存储中_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 存储用户';朋友';在GAE数据存储中

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

我正在尝试使用flask和google应用程序引擎制作一个类似facebook的社交网站(而不是facebook应用程序)。我目前正在研究如何在数据存储中存储好友

我希望它有点像facebook,因为一个用户会请求成为另一个人的朋友,一旦被接受,他们就可以看到对方的帖子。到目前为止,在我看来,它的存储方式如下:

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()