使用Python的Google App Engine:无法更新数据实体

时间:2012-04-21 00:31:05

标签: python django google-app-engine

我已经阅读,阅读并再次阅读文档并在Web上进行了许多搜索,但我还不明白为什么我的应用程序无法正常工作。 当用户连接时,他必须填写表格。这个代码有效。当用户注销然后登录时,表单字段将填充其信息。因此,数据被正确保存。但是,当用户更改表单字段值并提交表单时,数据不会更新。

我的模特:

class Members(db.Model):
    account = db.UserProperty()
    hashtags = db.StringProperty()

这里提交表单的类:

class Submit(webapp.RequestHandler):
def post(self):
    user = users.get_current_user()

    if user:
        url = users.create_logout_url('/')
        url_linktext = 'Logout'

        member = db.GqlQuery("SELECT * FROM Members WHERE account = :1", user)

        if member.count(1) > 0:
            m = Members(account=user)
            m.hashtags = ','.join([
                self.request.get('hashtag1'),
                self.request.get('hashtag2'),
                self.request.get('hashtag3')])
            m.put()
        else:
            member = Members()
            member.account = user
            member.hashtags = ','.join([
                self.request.get('hashtag1'),
                self.request.get('hashtag2'),
                self.request.get('hashtag3')])
            member.put()

        self.redirect('/')
    else:
        self.redirect('/')

1 个答案:

答案 0 :(得分:3)

问题是您要添加新记录而不是更新现有记录。对于您的代码,最简单的解决方法是更改​​此:

if member.count(1) > 0:
    m = Members(account=user)

为:

if member.count(1) > 0:
    m = member[0]

您的代码更新现有记录的原因是您尚未分配密钥。要了解有关密钥的更多信息,您可以在Kinds and Identifiers中了解密钥。