2012-04-19 2 views
0

Main이라는 Google 데이터베이스가 있습니다.일대 다 GQL 쿼리 및 사전 결과 넣기

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

는 일대 다 관계를 통해 Main를 참조하는 다른 데이터베이스 Photo있다.

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)) 

그래서 위의 쿼리의 목표는 이름을 찾을 수 있습니다 : 누구나 (아래 예) Main의 쿼리를 기반으로, 사전을 만드는 방법을 알고 있다면

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

이 궁금 해서요 '앨런'. 어떻게해야할지 모르는 쿼리의 목표는 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 장의 상향 보를 줄 수 있었으면 좋겠다. 내가 gql/python 더 이해 너무 느낌. 너 대 남자. – mrmo123

+0

오늘 코드를 다시 본 후에,'class main'에서 one-to-many 콜렉션을 얻을 수없는 이유는 for 중첩 된 for 루프가 없다는 것을 발견했습니다. 그래서 내 질문에 대한 대답은 일대 다 (one-to-many) 컬렉션을 선택하기위한 것입니다. 메인 클래스 내부에서 ... ... 고마워요! – mrmo123