我有个人资料模型:
class Profile(db.Model):
user = db.UserProperty(auto_current_user=True)
bio = db.StringProperty()
我想在此视图中显示用户现有的bio。如果用户还没有个人资料,我想创建它。这是我到目前为止所做的,但尚未奏效:
class BioPage(webapp2.RequestHandler):
def get(self):
user = users.get_current_user()
if user:
profile = Profile.get_or_insert(user=user) #This line is wrong
profile.bio = "No bio entered yet."
profile.save()
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, ' + user.nickname() + '<br/>Bio: ' + profile.bio)
else:
self.redirect(users.create_login_url(self.request.uri))
如何修复上面的错误行?我知道get_or_insert()应该采用一个关键名称,但我无法弄清楚它会是什么。
(Profile中的用户字段是否应该是db.UserProperty?)
答案 0 :(得分:2)
在这种情况下,您必须将key_name
传递给get_or_insert()
,如下所示:
profile = Profile.get_or_insert(key_name=user.email())
请注意,由于user
会自动填充auto_current_user=True
属性,因此您无需将其传递给get_or_insert()
。在您的情况下,除了键名之外,您不需要传递任何内容。
答案 1 :(得分:1)