Хранение «друзей» пользователя в хранилище данных GAE - PullRequest
1 голос
/ 06 апреля 2011

Я пытаюсь сделать что-то вроде социальной сети Facebook (а не приложения Facebook) для развлечения с помощью фляги и движка приложений Google.В настоящее время я работаю над тем, как хранить друзей в хранилище данных.

Я хочу, чтобы это было чем-то похоже на Facebook, так как пользователь будет запрашивать дружбу другого пользователя и, как только он будет принят, они смогут видеть сообщения друг друга.До сих пор мне кажется, что он будет храниться так:

class Friendship(db.Model):
    user1 = db.ReferenceProperty(User)
    user2 = db.ReferenceProperty(User)
    request_accepted = db.BooleanProperty()

, но я видел этот пост в stackoverflow и пример "многие ко многим" в Google'sДокументация хранилища данных , и это меня смутило.Раньше я когда-либо работал только с реляционными базами данных, такими как mysql, поэтому я не знаю, о чем они говорят, но это кажется важным.

Если кто-то знает, что я должен делать, пожалуйста, дайте мне знать -это будет очень цениться.Если вам нужен мой полный models.py исходный код, дайте мне знать.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

Я предлагаю вам также иметь идентификатор пользователя для хранения в модели Дружбы, поскольку это будет полезно в случае соответствующей фильтрации данных ... В противном случае вам нужно просканировать хранилище данных, чтобы найти общих друзей ...: 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 голосов
/ 06 апреля 2011

Я думаю, что то, что вы пытаетесь, не должно смущать.В вашей модели класс дружбы имеет две ссылки типа user 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 будут ссылаться на некоторый объект пользователя.А также добавьте имя коллекции в ваши ссылочные атрибуты, чтобы избежать путаницы.Чтобы узнать больше, посмотрите здесь моделирование в appengine

...