どのように私はGoogle App Engineのデータストアクエリから参照されるオブジェクトを注文するのですか?
-
22-08-2019 - |
質問
私はExhibit
は、Google App Engineのデータストアに格納されているどちらのオブジェクトを参照するオブジェクトをGallery
ています。
どのように私は(最終的にはDjangoテンプレート内)の値を反復するために周りを取得各Exhibit
オブジェクトのGallery
コレクションを注文するのですか?
すなわち。これは動作しません。
class Gallery(db.Model):
title = db.StringProperty()
position = db.IntegerProperty()
class Exhibit(db.Model):
gallery = db.ReferenceProperty(Gallery, collection_name='exhibits')
title = db.StringProperty()
position = db.IntegerProperty()
galleries = db.GqlQuery('SELECT * FROM Gallery ORDER BY position')
for gallery in galleries:
gallery.exhibits.order('position')
# ... send galleries off the the Django template
テンプレートでレンダリングすると、ギャラリーは、正しい順序が、展示品ではありませんされます。
解決
の代わりにApp Engineは作成コレクションプロパティに依存するので、あなたがあなた自身のクエリを作成する必要があります:
展示= Exhibit.all()フィルター( "ギャラリー="、ギャラリー).ORDER( "位置")
または同等に、GQLでます:
あなたはむしろ展示品のリスト・オブ・リストに渡すよりも、テンプレートの中からこれを行うことができるようにしたい場合は、展示= db.GqlQuery( "SELECT * FROM展示WHEREギャラリー=:位置1つのORDER BY"、ギャラリー)
は、このクエリを実行ギャラリーオブジェクトの簡単な方法を定義し、からそれを参照することができますテンプレート(例えば、{{gallery.exhibits_by_position}}次に、上記のクエリ実行することができるギャラリーオブジェクト、上exhibits_by_position()を実行します)。
あなたはこの速度への影響を懸念している場合は、、心配しないでください:プロパティのApp Engineが作成するコレクションは、単に、このための構文糖です。
。所属していません StackOverflow