Rafe Kaplanがデータストアhereに1対多の関係を使用することの良い説明があります。私はそれをUser
とVenue
のより単純なケースに適応させようとしました。だから、ユーザーは多くのレストランに行くことができます。そして、私は、ユーザーの電子メールやレストランを印刷したいユーザーが行ってきました:データストアの1対多の関係
class User(db.Model):
userEmail = db.StringProperty()
class Venue(db.Model):
user = db.ReferenceProperty(User,
collection_name="venues")
venue = db.StringProperty()
class OneToMany(webapp.RequestHandler):
def get(self):
scott = User(userEmail="[email protected]")
scott.put()
Venue(user=scott,
venue="club1").put()
Venue(user=scott,
venue="club2").put()
for v in scott.venues:
self.response.out.write(v.venue)
これは"club1 club2"
を印刷します。しかし、私は彼がに行った場所で"[email protected]"
を関連付けます。ので、私のような何か印刷したい:
for v in scott.venues:
self.response.out.write(userEmail)
self.response.out.write(v.venue)
をしようと"[email protected]: club1, club2"
をエラーを与える:
self.response.out.write(userEmail)
NameError: global name 'userEmail' is not defined
これを行うための正しい方法は何ですか?ありがとう!
EDIT2
query = User.all()
query.filter("userEmail =", "[email protected]")
results=query.fetch(1)
scott=results[0]
self.response.out.write("%s went to:" % scott.userEmail)
for venue in scott.venues:
self.response.out.write(venue.venue)
表示:
s[email protected] went to:club1club22
EDIT(再:答えをvonPetrushevことにより、(再:vonPetrushevによって答え)
は、これが動作しているようです)
少し混乱しています。
だから私はこの
query = User.all()
query.filter("userEmail =", "[email protected]")
のようなクエリを記述し、このユーザーに関連付けられているすべての会場を表示したいです。
User
とVenue
がどのように接続されているかは不明です。
ありがとうございますこれは印刷します: '[email protected] club1 [email protected] club22'ユーザーに質問して会場全体を取得する方法がわからないので、私はEDITを追加しました。 – Zeynel
あなたの答えをありがとう。 – Zeynel