2013-03-22 31 views
2

如何检索并显示从GQL查询返回的多个结果的键?AttributeError:'GqlQuery'对象没有'Key'属性

main.py

class MainPage(webapp2.RequestHandler): 
    def get(self):   

     author = "William Shakespeare" 

     q = db.GqlQuery("SELECT * FROM Book " + 
         "WHERE author = :1 ", author) 
     keys = q.Key 

     template_values = { 
      'author': author, 
      'key': key,   
     }  

     template = jinja_environment.get_template('index.html') 
     self.response.out.write(template.render(template_values)) 

更新1:

当我使用

keys = q.key() 

我得到这个错误:

File "C:\programming_google_app_engine_repo\datastore\main.py", line 17, in get key = q.key() AttributeError: 'GqlQuery' object has no attribute 'key'

回答

2

您的代码存在多个问题。请退后一步,思考您想要做什么并再次浏览文档。

问题1
一个GqlQuery的结果不具有密钥。您需要使用.get().fetch(1)访问Book对象。

q = db.GqlQuery("SELECT * FROM Book WHERE author = :1 ", author) 
my_book = q.get() 

问题2
要得到你需要记住包括括号/括号method的价值。

my_book_key = my_book.key() # don't forget the parens/brackets 

template_values = { 
    'author': author, 
    'key': my_book_key,   
} 
+0

+1谢谢你,我的朋友。有效! – Anthony 2013-03-22 21:48:46

+0

非常欢迎。 – bernie 2013-03-22 21:49:01