Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一对多GQL查询并将结果放入字典_Python_Google App Engine_One To Many_Gql - Fatal编程技术网

Python 一对多GQL查询并将结果放入字典

Python 一对多GQL查询并将结果放入字典,python,google-app-engine,one-to-many,gql,Python,Google App Engine,One To Many,Gql,我有一个名为Main的谷歌数据库 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() photo

我有一个名为
Main
的谷歌数据库

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
的查询制作词典(示例如下所示):

因此,上面查询的目标是查找名称“Alan”。我不知道该怎么做的查询的目标应该是在
类Photo
中检索
photo1
photo2
(当name='Alan'),并将其放入字典中


提前感谢您的帮助

根据您提供的信息,想知道您想要实现什么目标有点困难。也许你可以进一步澄清。但现在,这就是你的意思吗

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

非常感谢!!!!!!!!!我希望我能给你100票。我觉得我也更了解gql/python。你这个男人。今天再次查看代码后,我发现我无法在
class main
中获得一对多集合的原因是我没有嵌套的for循环。所以我的问题的答案是为了选择一对多的集合,你需要一个for…in。。。在…的主类中。。。非常感谢。
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))