これが私のモデルとビューです。私は App Engine を初めて使用し、profiletitle と関係のある新しい言語セットを作成しようとしています。大量の投稿/ドキュメントを読みましたが、機能的なビュー コードの良い例が見つかりません。
models.py
class AddProfile(db.Model):
profiletitle = db.StringProperty(required=True)
class AddLang(db.Model):
profile = db.ReferenceProperty(AddProfile, required=True)
language = db.StringListProperty()
date = db.DateTimeProperty(auto_now_add=True)
ビュー.py
class CreateLang(BaseHandler):
def post(self):
n = AddLang(
profile = self.request.get('profile'),
language = self.request.get('language').split(', '))
n.put()
return webapp2.redirect('/')
def get(self):
self.render_template('create.html', {})
更新された view.py - データストアにデータを保存するようになりました
class CreateLang(BaseHandler):
def post(self):
n = AddLang(
profile = AddProfile.all().filter('profiletitle', self.request.get('profile')).get(),
language = self.request.get('language').split(', '))
n.put()
return webapp2.redirect('/')
def get(self):
self.render_template('create.html', {})
create.html
<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
<div class="field-wrapper">
<div class="field-label">
<label for="id_profile">Profile</label>:
</div>
<div class="field-field">
<input type="text" name="profile" id="id_profile" />
</div>
</div>
<div class="field-wrapper">
<div class="field-label">
<label for="id_language">Language</label>:
</div>
<div class="field-field">
<input type="text" name="language" id="id_language" />
</div>
</div>
<br>
<input type="submit" value=submit />
</form>
データを投稿/保存しようとすると、次のエラーが表示されます。これは、get を使用して、テンプレートで選択した profiletitle の特定の ID を呼び出す必要があるために発生したと考えられます。
注: 私はフォーム py を使用していません。単純な html テンプレートを使用しています。ご不明な点がある場合、またはテンプレートを確認する必要がある場合はお知らせください。読んでくれて/助けてくれてありがとう。
![datastore snip]:(http://imm.io/1hTVN)
Error Message
if value is not None and not value.has_key():
AttributeError: 'unicode' object has no attribute 'has_key'