Запрос между тремя таблицами, отношения многие ко многим

1

У меня три базы данных в GAE. Хобби, Участники и события.

class Hobby(db.Model):
    name = db.StringProperty()


htest = Hobby.get_or_insert('tennis')
htest.name = 'tennis'
htest.put()
htest = Hobby.get_or_insert('basketball')
htest.name = 'basketball'
htest.put()
htest = Hobby.get_or_insert('food')

class Event(db.Model):
   title = db.StringProperty(required=True)
   description = db.TextProperty()
   time = db.DateTimeProperty()
   location = db.TextProperty()
   creator = db.UserProperty()
   edit_link = db.TextProperty()
   gcal_event_link = db.TextProperty()
   gcal_event_xml = db.TextProperty()
   hobby = db.ReferenceProperty(Hobby)

class Attendee(db.Model):
   email = db.StringProperty()
   hobbies = db.ListProperty(db.Key)
   event = db.ReferenceProperty(Event)

Каждый участник может выбрать любое хобби по своему усмотрению. Когда событие создается, пользователь выбирает хобби, чтобы связать событие, и приглашение будет отправлено каждому посетителю, который выбрал это хобби. Хобби DB - это предварительно загруженная база данных.
Я хочу сделать запрос, который делает это.

после прочтения блога Ник http://blog.notdot.net/2010/10/Modeling-relationships-in-App-Engine, который был очень полезным, я чувствую, что я должен использовать метод, упомянутый там

attendees = фильтр Attendee.all() ('хобби =', баскетбол).fetch(100)

однако, я застрял там... любая помощь была бы действительно оценена.

  • 0
    Как вы застряли? Вы на самом деле не описали никаких проблем.
Теги:
google-app-engine

1 ответ

1

Я думаю, вы должны записать приглашения отправить в таблицу, скажем "invitationsSend" с двумя полями: event и attendee, которые два поля создают уникальный первичный ключ.

Чтобы построить это, вам нужно будет выбрать данные между вашим столом и участниками:

insert into invitationsSend(select E.Event, A.Attendee from Event as E, Attendee as A where E.Hobby = A.Hobby)

Но я не знаком с вашим "db.listProperty", используемым для "хобби", и я не знаю, как заглянуть в этот список. Я должен сделать это как отдельную таблицу с данными "Attendee, Hobby", как в качестве первичного ключа.

С Уважением,

Ещё вопросы

Сообщество Overcoder
Наверх
Меню