2017-03-03 31 views
1

我有一個觀點,諮詢頁面,並請求處理程序是:Python的AppEngine上 - 通過兩個實體神社模板視圖

class ViewConsultPage(webapp2.RequestHandler): 
    def get(self): 
     consult = ndb.Key(urlsafe=self.request.get('key')).get() 
     template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html') 
     template_values = { 
     'consult': consult 
     } 
     self.response.out.write(template.render(template_values)) 

它顯示有關諮詢信息。然後用與諮詢相同的ID創建評估。然後我想在同一頁面上顯示有關諮詢和評估的信息。

我認爲我在評估中添加類似處理程序的諮詢:

class ViewConsultPage(webapp2.RequestHandler): 
    def get(self): 
     consult = ndb.Key(urlsafe=self.request.get('key')).get() 
     assessment = ndb.Key(urlsafe=self.request.get('key')).get() 
     template = JINJA_ENVIRONMENT.get_template('/templates/view-consult.html') 
     template_values = { 
     'consult': consult, 
     'assessment': assessment 
     } 
     self.response.out.write(template.render(template_values)) 

當我加載視圖,諮詢頁的諮詢性質和以前的渲染,但評估的性能,例如{{ assessment.assess_notes}}打印爲空字符串(或不填)。

回答

1

consultassessment共享相同的密鑰ID,但不是相同的密鑰和urlsafe字符串,因此您不能使用相同的方法獲取實體。

您可以通過其密鑰ID獲得assessment實體 - 對於兩個實體都是相同的。所以我會重寫這樣的get()的前兩行:

consult_key = ndb.Key(urlsafe=self.request.get('key')) 
consult = consult_key.get() 
# assessment and consult have the same key ID 
assessment = Assesment.get_by_id(consult_key.id()) 
+0

是的,它得到了它的工作。 :) – TimothyAURA