:現在、私は次のように記述ユーザーにPhoneNumberのすなわち追加したい場合は
その後、モデルのget_by_id
メソッドを持つエンティティを検索:
今
class User(db.Model):
name = db.StringProperty()
# etc.
def AddUser(webapp2.RequestHandler):
def get(self):
newUser = User()
newUser.name = self.request.get('name')
# etc. assign all model properties
newUser.put()
# now, newUser.Key().id() contains the auto-assigned numeric id.
# we can pass this value to our template and get it back via
# a form paramter for subsequent operations.
def ShowUser(webapp2.RequestHandler):
def get(self):
user_to_show_id = self.request.get('id')
user_to_show = User.get_by_id(user_to_show_id)
if user_to_show is not None:
# populate the template parameters with the users's data
# and render the template
else:
# The requested user does not exist, so
# render an error message/page.
あなたはまた、特定のユーザーに属する電話番号エンティティを保存したい場合、あなたは彼らがそのような彼らの親がUserエンティティであることを保存します。これにより、ユーザのエンティティグループに格納され、エンティティグループ内にあるエンティティは、親と一緒に格納されている場合よりも迅速に照会できます。
のすべてのユーザがそれに関連付けられたPHONENUMBERエンティティの任意の番号を持つことができると言うてみましょう:
class Phonenumber(db.Model):
number_type = db.StringProperty()
number = db.StringProperty()
私たちは、Userクラスにメソッドを追加します:明らかに
def AddNumber(self, new_number_type, new_number):
new_number = Phonenumber(parent=self, number_type=new_number_type, number=new_number)
# In this case, self is the User entity, and by saying parent=self, we're putting
# this Phonenumber entity into User's entity group.
new_number.put()
def GetPhoneNumber(self):
# Now, getting all of User's phone numbers is a simple as a query with an
# Ancestor clause:
users_numbers = Phonenumber.all().ancestor(self).fetch(1000)
return users_numbers
、これらのクラス私の頭の上からナイーブでまっすぐ離れていますが、彼らがあなたとあなたの祖先の関係を理解するのを助けることを願っています。多くの場合、手動でキーを作成するのに、Key()
を使用する必要はありません。あなたが本当に必要な場合を除き、そのルートには行かないでください。それでも、Keysがどのように機能するかを理解することは、AppEngineを本当に理解する上で役に立ちます。
私はそれらがあなたの2つの主な質問だったと思いますか?あなたが他人を持っている場合は、コメントを残してください。私は自分の答えを編集します。
を説明したいです:http://stackoverflow.com/questions/10156129/what-should-i-store-as-my-index-in-client-code – alex