2017-03-28 7 views
0

私はエンティティのリストを持っており、個々のエンティティの詳細にリンクするためにエンティティキーを使いたいと思っています。Google Appengineのエンティティインスタンスからエンティティインスタンスにドリルダウンする方法は?

class RouteDetails(ndb.Model): 
    """Get list of routes from Datastore """ 
    RouteName = ndb.StringProperty() 

    @classmethod 
    def query_routes(cls): 
     return cls.query().order(-cls.RouteName) 


class RoutesPage(webapp2.RequestHandler): 
    def get(self): 
     adminLink = authenticate.get_adminlink() 
     authMessage = authenticate.get_authmessage() 
     self.output_routes(authMessage,adminLink) 

    def output_routes(self,authMessage,adminLink): 
     self.response.headers['Content-Type'] = 'text/html' 
     html = templates.base 
     html = html.replace('#title#', templates.routes_title) 
     html = html.replace('#authmessage#', authMessage) 
     html = html.replace('#adminlink#', adminLink) 
     html = html.replace('#content#', '') 
     self.response.out.write(html + '<ul>') 
     list_name = self.request.get('list_name') 
     #version_key = ndb.Key("List of routes", list_name or "*notitle*") 
     routes = RouteDetails.query_routes().fetch(20) 

     for route in routes: 
      routeLink = '<a href="route_instance?key={}">{}</a>'.format(
       route.Key, route.RouteName) 
      self.response.out.write('<li>' + routeLink + '</li>') 
     self.response.out.write('</ul>' + templates.footer) 

エラーはAttributeError: 'RouteDetails' object has no attribute 'Key'です。

drilldownのURLでエンティティの一意のIDを参照するにはどうすればよいですか?

+1

'key'はすべて小文字です

for route in routes: routeLink = '<a href="route_instance?key={}">{}</a>'.format( route.key.urlsafe(), route.RouteName) self.response.out.write('<li>' + routeLink + '</li>') 

参照を。 –

答えて

1

RouteDetailsオブジェクトは実際にはKey属性を持っていないので、例外はroute.Keyになります。

エンティティの鍵を取得するには、key属性/プロパティー:route.keyを呼び出す必要があります。

エンティティのキ​​ーをHTMLで直接渡すことは、オブジェクトであるため機能しません。 urlsafe()メソッドは、HTMLで使用するのに問題のないキーオブジェクトの文字列表現を提供するために使用できます。

だからではなく、これらの線に沿って何かの操作を行います。また、Linking to entity from list

+0

私はそれをしたが、次のエラーました: 'routeLink = '{}' .format(。route.key()urlsafe()、route.RouteName)' はTypeError: 'キー' オブジェクトは '、 –

+1

おっと呼び出すことはできませんがkey'は属性であり、メソッドではありません。一定。 –

+0

ああ、 'urlsafe()'は 'key'属性に適用されるメソッドです。ありがとうございました! –

関連する問題