ReferenceProperty に条件を持つ GQL クエリ (Google App Engine 用) を構築する

StackOverflow https://stackoverflow.com/questions/852055

  •  21-08-2019
  •  | 
  •  

質問

次のモデルがあるとします。

class Schedule(db.Model):
    tripCode = db.StringProperty(required=True)
    station = db.ReferenceProperty(Station, required=True)    
    arrivalTime = db.TimeProperty(required=True)
    departureTime = db.TimeProperty(required=True)

そして、変数に Station オブジェクトが保存されているとします。 foo.

によって参照される Station オブジェクトへの参照を含むすべての Schedule オブジェクトを返す GQL クエリを組み立てるにはどうすればよいですか? foo?

これが私のベストです(とはいえ、 正しくない) このようなクエリを作成してみます。

myQuery = "SELECT * FROM Schedule where station = " + str(foo.key())

もう一度 foo です 物体

役に立ちましたか?

解決

文字列置換を使用してユーザー データを GQL 文字列に挿入しないでください。GQL はパラメータ置換をサポートしているため、これを行うことができます。

db.GqlQuery("SELECT * FROM Schedule WHERE station = $1", foo.key())

または、クエリ インターフェイスを使用して、次のようにします。

Schedule.all().filter("station =", foo.key())

他のヒント

さらに簡単な方法は、「c​​ollection_name」フィールドを ReferenceProperty に追加してモデル定義を変更することです。

station = db.ReferenceProperty(Station、required=True、collection_name="スケジュール")

次に、次のようにすることができます。

foo.スケジュール

すべての駅のスケジュールを取得したいときはいつでも。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top