2012-04-19 4 views
0

私はMainというGoogleデータベースを持っています。1対多のGQLクエリと結果を辞書に入れよう

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

1対多の関係を通じてMainを参照する別のデータベースPhotoがあります。誰もが辞書を作成する方法を知っている場合、私はMain(以下の例)のクエリに基づいて、思っていた

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

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 Photophoto1photo2(name = '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

+0

今日、コードをもう一度見て、クラスメインで1対多のコレクションを取得できなかった理由は、forループを入れ子にしていないということでした。だから、私の質問への答えは、1対多のコレクションを選択するためです。あなたは...のために...メインクラスの中で... in ...ありがとう! – mrmo123

関連する問題