データストア内の1対多の関係を理解しようとしています。モデルにReferenceProperty
が含まれている場合、どのようにクエリを更新してユーザーのレコードを更新するのか理解できません。私はこのモデルを持っていると言う:ReferencePropertyを使用しているときにデータストアを照会する方法は?
class User(db.Model):
userEmail = db.StringProperty()
userScore = db.IntegerProperty(default=0)
class Comment(db.Model):
user = db.ReferenceProperty(User, collection_name="comments")
comment = db.StringProperty()
class Venue(db.Model):
user = db.ReferenceProperty(User, collection_name="venues")
venue = db.StringProperty()
私が正しく理解していれば、一意にuserEmail
で識別される同じユーザーは、多くのコメントを持つことができ、今では多くの会場(レストランなど)
関連付けることができる、のは言わせてユーザ[email protected]
はすでにデータベースにあり、新しいエントリを送信します。
Based on this answerは、私のような何かを実行します。
q = User.all()
q.filter("userEmail =", [email protected])
results = q.fetch(1)
newEntry = results[0]
をしかし、私はこれが何をするかは明らかではありませんよ!私がしたいのは、class Comment
とclass Venue
のフィールドのcomment
とvenue
フィールドを更新することです。
この機能の仕組みを理解できたら助かりますか?ありがとう。
comments = Comment.all().filter("user =", user.key()).fetch(50)
ですから、最初に電子メールでユーザーを検索し、そのを使ってコメントや会場を検索することもできます、特定のユーザーのすべてのコメントを取得し、ユーザのキーを使用してユーザーのプロパティをフィルタリングするために
大きな説明、非常に有用な、ありがとう。 しかし、私はまだユーザーに関連付けられた新しい会場をどのように追加するのか分かりません。 あなたが与えた例では、私はすでにデータベースに入っている会場をつかみ、それを変更します。 しかし、このユーザーは新しい会場についての新しいコメントを投稿しています。 – Zeynel
上記の更新を参照してください。 – vonPetrushev
この質問のお手伝いを心から感謝します(特に、行ごとのコメント)。 – Zeynel