我在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)
每位参加者都可以根据自己的意愿选择许多爱好。当创建事件时,用户选择与该事件相关联的爱好,并且邀请将被发送给选择该爱好的每个参与者。 Hobby DB是预装数据库 我想做一个查询来做到这一点。
在阅读尼克的博客后 http://blog.notdot.net/2010/10/Modeling-relationships-in-App-Engine 这非常有帮助我觉得我应该使用那里提到的方法与会者= Attendee.all()过滤器('hobbies =',篮球).fetch(100)
但是,我被困在那里......任何帮助都会非常感激。答案 0 :(得分: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”,两者都是主键。
此致