どのように適切に(パイソン)GoogleのApp Engineのデータソースに1対多のジョイン行うには?
-
11-09-2019 - |
質問
私は以下のように設定し、いくつかのモデルがあります:
class Apps(db.Model):
name = db.StringProperty(multiline=False)
description = db.TextProperty()
class AppScreenshots(db.Model):
image_file = db.StringProperty(multiline=False)
description = db.StringProperty(multiline=False)
app = db.ReferenceProperty(Apps)
私はそうのようなスクリーンショットでは、「親」のアプリを参照しようとしています
a = Apps.get(app_key)
ss = AppScreenshots(
image_file = 'foo',
description = 'bar',
app = a
)
ss.put()
しかし、それは言って私に文句ます:
BadArgumentError('_app should be a string; received ag1raWxsZXItcm9ib3RzcgoLEgRBcHBzGAkM (a Key):',)
私は、インターネット上のいくつかの例を乗り越えてみた、それらはすべてJUST上記のように動作するように見えます。グーグルの文書の一つセットは、それをやって示唆してアップしています少し異なり、このような:
a = Apps.get(app_key)
ss = AppScreenshots(
image_file = 'foo',
description = 'bar',
app = a.key()
)
ss.put()
しかし、それは私にまったく同じエラーを与えます。
私が間違って何をしているのですか?
解決
あなたのコードを実行しようとしたときに私が見つけた問題が明らかにあなたはこのような「アプリケーション」として何か他にAppScreenshotsに「アプリ」の名前を変更する必要があるということでした。単語「アプリ」は、この文脈で予約されている必要があります。
の代わりに、このクエリをお試しください。あなたが最初のエンティティをしたくない場合は、この上で、あまりにも)(.filterを行うことができます。
class AppScreenshots(db.Model):
image_file = db.StringProperty()
description = db.StringProperty()
apps = db.ReferenceProperty(Apps)
appsObject = db.Query(Apps).get()
ss = AppScreenshots(image_file = 'foo', description = 'bar',apps = appsObject)
ここでは、モデリングの関係リンクするに役立つ記事です。
ここSO ののまた、関連する質問は P>
所属していません StackOverflow