ReferenceProperty は、2 つのモジュール間の参照を処理するのに非常に役立ちました。キツネの例:
class UserProf(db.Model):
name = db.StringProperty(required=True)
class Team(db.Model):
manager_name = db.ReferenceProperty(UserProf, collection_name='teams')
name = db.StringProperty(required=True)
- チーム インスタンスで「manager_name」を取得するには、team_ins.manager_name を使用します。
- 特定のユーザー インスタンスによって管理される「チーム」を取得するには、user_instance.teams を使用して反復します。
簡単で分かりやすいと思いませんか?
NDB を使用して同じことを行うには、変更する必要があります
db.ReferenceProperty(UserProf, collection_name='teams')
-->ndb.KeyProperty(kind=UserProf)
team_ins.manager_name.get()
マネージャーの名前を教えてくれます特定のユーザーによって管理されているすべてのチームを取得するには、次のことを行う必要があります
for team in Team.query(Team.manager_name == user_ins.key): print "team name:", team.name
ご覧のとおり、この種のシナリオの処理は、ndb よりも db の方が簡単で読みやすいように見えます。
- ndb で ReferenceProperty を削除する理由は何ですか?
- db のクエリ user_instance.teams でさえ、ndb の for ループで行われるのと同じことを行う必要があります。しかし、ndb では、for ループの使用について明示的に言及しています。
- user_instance.teams を実行するとき、舞台裏で何が起こっているのでしょうか?
前もって感謝します..