使用Python的Google App Engine:无法更新数据实体
我读了,读了,又读了一遍文档,在网上做了很多搜索,但我还不明白为什么我的应用程序不能正常工作。 当用户连接时,他必须填写表单。这个代码是有效的。当用户注销,然后登录时,表单字段将填充他的信息。因此,数据已正确保存。但是,当用户更改表单字段值并提交表单时,数据不会更新 我的模型: 以下是提交表格的班级:使用Python的Google App Engine:无法更新数据实体,python,django,google-app-engine,Python,Django,Google App Engine,我读了,读了,又读了一遍文档,在网上做了很多搜索,但我还不明白为什么我的应用程序不能正常工作。 当用户连接时,他必须填写表单。这个代码是有效的。当用户注销,然后登录时,表单字段将填充他的信息。因此,数据已正确保存。但是,当用户更改表单字段值并提交表单时,数据不会更新 我的模型: 以下是提交表格的班级: 问题是您正在添加新记录,而不是更新现有记录。对于您的代码,最简单的修复方法是更改以下内容: if member.count(1) > 0: m = Members(account
问题是您正在添加新记录,而不是更新现有记录。对于您的代码,最简单的修复方法是更改以下内容:
if member.count(1) > 0:
m = Members(account=user)
致:
代码更新现有记录的原因是您尚未分配密钥。要了解有关键的更多信息,您可以在中阅读它们。或使其更具可读性
member.get()
而不是成员[0]
基本上,您在更新之前没有获得成员。您正在使用gqlquery查看是否存在现有成员,但随后您使用m=Member(account=user)
创建了一个新实体,而不是使用m=Member.get()
非常感谢。我的问题解决了。
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('/')
if member.count(1) > 0:
m = Members(account=user)
if member.count(1) > 0:
m = member[0]