2010-09-08 72 views
1

我已經閱讀Appengine的文檔以瞭解如何從模型中檢索數據。 但我錯過了一些東西..Appengine檢索與用戶表單提交相關的數據

我的模型是用戶和學生,其中學生是來自用戶的引用屬性。

用戶登錄,用一些值填寫表單並用put()保存數據。 如果您使用[email protected]登錄,您將獲得您的數據,或者如果您使用另一封電子郵件登錄,您將獲得與發送給db的信息相對應的數據。

Everythin很好,直到這裏。 我正嘗試獲得一個PDF,並希望從loged用戶獲取數據

例:

class SavePDF(webapp.RequestHandler): 
    def post(self): 
     user = users.get_current_user() 
     if user: 
      student= models.Student.all().get() 

     p = canvas.Canvas(self.response.out) 

     p.drawImage('ipca.jpg', 40, 700) 

     p.drawString(50,640, 'Student Info:' + '%s' % student.name) 
     p.drawString(50,620, 'Adress:'     + '%s' % student.adress) 


     p.drawString(50,300, 'PDF updated:%s' %   str(datetime.date.today())) 

     p.showPage() 
     self.response.headers['Content-Type'] = 'application/pdf' 
     self.response.headers['Content-Disposition'] = 'filename=mypdf.pdf' 
     p.save() 

我來到這裏是不是當前用戶的用戶。顯示關於其他用戶的信息。 我試過不同的東西,但它會引發錯誤。 如果我嘗試迭代給出錯誤。

我錯過了一些東西。

回答

3

如果你的學生模型是這樣的:

class Student(db.Model): 
    user = db.UserProperty() 
    name = db.StringProperty() 
    address = db.StringProperty() 

,那麼你可能想是這樣的:

user = users.get_current_user() 
if user: 
    student = models.Student.all().filter('user =', user).get() 
+0

喜,出現此錯誤:回溯(最近通話最後一個): 文件「 C:\ Program Files \ Google \ google_appengine \ google \ appengine \ ext \ webapp \ __ init__.py「,第513行,在__call__ handler.post(* groups) 文件」C:\ Users \ Celia \ workspace \ myApp \ src \ main.py「,第337行,後 p.drawS tring(50,640,'學生信息:'+'%s'%student.name) AttributeError:'NoneType'對象沒有屬性'name' – Martinho 2010-09-08 13:16:07

+0

對不起,用戶在User(db.Model)類中定義: – Martinho 2010-09-08 13:26:38

+0

@Martin :這是因爲學生是None。從你的代碼中,如果沒有登錄的谷歌用戶(即users.get_current_user())返回None,可能會發生這種情況,或者如果沒有指定用戶的學生(即查詢返回None),可能會發生這種情況。你的PDF代碼假設存在一個有效的學生 - 當沒有有效的學生時,你可能需要返回其他東西? – 2010-09-08 13:46:38