これは、ユーザーを保存するための私のモデルです:
class User(db.Model):
username = db.StringProperty(required = True)
password = db.TextProperty(required = True)
email = db.TextProperty(required = True)
このユーザーがサインアップし、そこにデータをデータストアに入れたとします
u = Post(username = joey, password = encrypt(password), email=joey@friends.com)
u.put()
u = Post(username = chandler, password = encrypt(password), email=chandler@friends.com)
u.put()
u = Post(username = ross, password = encrypt(password), email=ross@friends.com)
u.put()
ユーザーがパスワードを忘れた場合、またはパスワードを変更した場合。ユーザー名または電子メールをキーとしてレコードを取得し、暗号化された新しいパスワードを更新するにはどうすればよいですか?
私は次のことを試しました:
u = User.all().filter('username=', 'joey').fetch(10)
for r in u: #assuming I get only one record.
r.password = encrypt(password)
r.put()
これは、データストアへの新しい別のレコードです。これでjoeyの 2 つのレコードができました。
また、GqlQuery を使用してユーザー レコードをフェッチし、レコードを更新してみました。「リストに put() メソッドが定義されていません」というエラーがスローされます
私をドキュメントにリンクしないでください。頭が痛くなります。
TL;DR: ユーザー定義データをキーとして使用して、GAE でデータストアを更新する方法。
編集: コードのタイプミスを修正します。