Appengine检索与用户表单提交相关的数据

时间:2010-09-08 11:43:01

标签: python google-app-engine bigtable reportlab

我已经阅读了Appengine的文档,知道如何从模型中检索数据。 但是我错过了一些东西......

我的模特是用户和学生,其中学生是来自用户的参考资产。

用户登录,填写带有一些值的表单并使用put()保存数据。 如果您使用test@example.com登录,则会获得您的数据,或者如果您使用其他电子邮件登录,则会获得与您发送给db的信息相对应的数据。

直到这里,一切都很好。 我正在尝试获取PDF并希望从用户那里获取数据。

示例:

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

我得到的是不是当前用户的用户。显示有关其他用户的信息。 我尝试了不同的东西,但它会引发错误。 如果我尝试迭代给出错误。

我错过了什么。

1 个答案:

答案 0 :(得分: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()