2012-04-19 58 views
0

我有一個名爲Main的谷歌數據庫。一對多GQL查詢並將結果放入字典中

class Main(db.Model): 
    name = db.StringProperty() 
    phone = db.StringProperty() 

還有另外一個數據庫Photo它通過一個一對多的關係,引用Main

class Photo(db.Model): 
    main = db.ReferenceProperty(Main,collection_name='photos') 
    photo1 = db.StringProperty() 
    photo2 = db.StringProperty() 

我不知道是否有人知道如何使一本字典的基礎上(如下圖所示例子)Main查詢:

class Name(webapp.RequestHandler): 
    def get(self): 
    names = db.GqlQuery('SELECT * FROM Main WHERE name=:1 LIMIT 1','Alan') 
    values = {'names':names} 
    self.response.out.write(template.render('base.html', values)) 

所以上面的查詢的目標是找出名「阿蘭」。我不知道該怎麼做的查詢的目標應該是在class Photo中檢索photo1photo2(當名稱='Alan'時)並將其放入字典中。

在此先感謝您的幫助!

回答

1

用你提供的信息弄清楚你想要達到的目標有點困難。也許你可以進一步澄清。但現在,這是你的意思嗎?

class Name(webapp.RequestHandler): 
    def get(self): 
    names = db.GqlQuery('SELECT * FROM Main WHERE name=:1 LIMIT 1','Alan') 
    photo_array = [] #initialize an array to store the photos dicts 
    for name in names: 
     for photos in name.photos: #go over all the Photo entities that reference 'Alan' 
     #retrieve and put in a dictionary, and append to the photo_array 
     photo_array.append({"photo1":photos.photo1, "photo2": photos.photo2}) 
    values = {'names':names, 'photos': photo_array} 
    self.response.out.write(template.render('base.html', values)) 
+0

太感謝你了!!!!!!!!!我希望我能給你100個upvotes。我覺得我更瞭解gql/python。你達人。 – mrmo123 2012-04-19 08:25:45

+0

今天再次查看代碼之後,我發現我無法在'class main'中獲得一對多集合的原因是我沒有嵌套for循環。所以我的問題的答案是爲了選擇一個一對多的集合,你需要一個for ... in ...在主類內部... in ...謝謝! – mrmo123 2012-04-19 20:06:58

相關問題