三表间查询,多对多关系

2024-05-23 16:47:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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 这对我很有帮助,我觉得我应该用上面提到的方法

与会者=与会者.all()筛选器('爱好=',basketball).fetch(100)

然而,我被困在那里。。。任何帮助都将不胜感激。你知道吗


Tags: ornameevent数据库dbgetmodelclass
1条回答
网友
1楼 · 发布于 2024-05-23 16:47:36

我认为您应该将发送的邀请记录在一个表中,比如“invitationsend”,其中包含两个字段:event和attender,这两个字段构成唯一的主键。你知道吗

要建立此模型,您必须选择表事件和与会者之间的数据:

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

但我不熟悉你的”db.listProperty属性用于“爱好”我不知道怎么查那个列表。我应该把它作为一个单独的表来做,表中的数据“Attendee,Hobby”都是主键。你知道吗

谨致问候

相关问题 更多 >