首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GAE数据存储Put()

GAE数据存储Put()
EN

Stack Overflow用户
提问于 2010-03-23 15:42:52
回答 2查看 939关注 0票数 3
代码语言:javascript
复制
def post(self):
    update = self.request.get('update')

    if users.get_current_user():
        if update:
            personal = db.GqlQuery("SELECT * FROM Personal WHERE __key__ = :1", db.Key(update))

            personal.name = self.request.get('name')
            personal.gender = self.request.get('gender')
            personal.mobile_num = self.request.get('mobile_num')
            personal.birthdate = int(self.request.get('birthdate'))
            personal.birthplace = self.request.get('birthplace')
            personal.address = self.request.get('address')
            personal.geo_pos = self.request.get('geo_pos')
            personal.info = self.request.get('info')
            photo = images.resize(self.request.get('img'), 0, 80)
            personal.photo = db.Blob(photo)
            personal.put()
            self.redirect('/admin/personal')
        else:
            personal= Personal()

            personal.name = self.request.get('name')
            personal.gender = self.request.get('gender')
            personal.mobile_num = self.request.get('mobile_num')
            personal.birthdate = int(self.request.get('birthdate'))
            personal.birthplace = self.request.get('birthplace')
            personal.address = self.request.get('address')
            personal.geo_pos = self.request.get('geo_pos')
            personal.info = self.request.get('info')
            photo = images.resize(self.request.get('img'), 0, 80)
            personal.photo = db.Blob(photo)
            personal.put()
            self.redirect('/admin/personal')

    else:
        self.response.out.write('I\'m sorry, you don\'t have permission to add this LP Personal Data.')

如果' update‘是包含关键数据存储关键字的查询字符串,这是否会更新现有记录。我尝试了一下,但是一直在添加新的记录/实体。请给我一些正确更新记录/实体的建议。

更正?:

代码语言:javascript
复制
def post(self):
    update = self.request.get('update')

    if users.get_current_user():
        if update:
            personal = Personal.get(db.Key(update))

            personal.name = self.request.get('name')
            personal.gender = self.request.get('gender')
            personal.mobile_num = self.request.get('mobile_num')
            personal.birthdate = int(self.request.get('birthdate'))
            personal.birthplace = self.request.get('birthplace')
            personal.address = self.request.get('address')
            personal.geo_pos = self.request.get('geo_pos')
            personal.info = self.request.get('info')
            photo = images.resize(self.request.get('img'), 0, 80)
            personal.photo = db.Blob(photo)
            personal.put()
            self.redirect('/admin/personal')
        else:
            personal= Personal()

            personal.name = self.request.get('name')
            personal.gender = self.request.get('gender')
            personal.mobile_num = self.request.get('mobile_num')
            personal.birthdate = int(self.request.get('birthdate'))
            personal.birthplace = self.request.get('birthplace')
            personal.address = self.request.get('address')
            personal.geo_pos = self.request.get('geo_pos')
            personal.info = self.request.get('info')
            photo = images.resize(self.request.get('img'), 0, 80)
            personal.photo = db.Blob(photo)
            personal.put()
            self.redirect('/admin/personal')

    else:
        self.response.out.write('I\'m sorry, you don\'t have permission to add this LP Personal Data.')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-23 18:02:17

当您知道键时,不需要执行查询:只需在键上调用db.get()直接检索它,这比执行查询快得多。

至于为什么你每次都要创建一条新记录,看起来你没有正确地将“update”传递给你的页面。尝试记录查询字符串参数,看看出了什么问题。

票数 0
EN

Stack Overflow用户

发布于 2010-03-24 03:01:08

我终于自己回答了这个问题,感谢Nick Johnson在这方面的指导。我无法将查询字符串url作为'string key‘获取,它总是引发BadKeyError: Invalid string key异常。

我尝试将这个'update‘字符串作为隐藏字段放在html编辑表单上,这是可行的,因为'update’现在是一个有效的'string key‘。

代码语言:javascript
复制
def post(self):
    update = self.request.get('update')

    if users.get_current_user():
        if update != '':
            personal = Personal.get(db.Key(update))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2498264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档