У меня три базы данных в 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)
однако, я застрял там... любая помощь была бы действительно оценена.
Я думаю, вы должны записать приглашения отправить в таблицу, скажем "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", как в качестве первичного ключа.
С Уважением,