Erstellen Sie eine GQL Abfrage (für Google App Engine), die eine Bedingung für Reference hat

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

  •  21-08-2019
  •  | 
  •  

Frage

Sagen, dass ich das folgende Modell haben:

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)

Und lassen Sie uns sagen, dass ich ein Stationsobjekt in der var foo gespeichert haben.

Wie zusammenbauen ich eine GQL Abfrage, die alle Schedule Objekte mit einem Verweis auf die Stations Objekt durch foo verwiesen zurück?

Das ist meine beste (wenn auch falsch ) Versuch, eine solche Abfrage zu bilden:

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

Wieder einmal foo ist ein Station Objekt

War es hilfreich?

Lösung

Sie sollten nicht seine Benutzerdaten in eine GQL String Einfügen String-Ersetzung verwendet. GQL unterstützt Parameter Substitution, so können Sie dies tun:

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

oder über die Query-Schnittstelle:

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

Andere Tipps

Ein noch einfacheres, was zu tun ist, um die Bestimmung des Modells zu ändern, indem Sie das ‚collection_name‘ Feld auf die Reference:

  

Station = db.ReferenceProperty (Station, erforderlich = True, collection_name = "Zeitplan")

Dann können Sie einfach tun:

  

foo.schedules

, wenn Sie alle Stationen Zeitpläne erhalten möchten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top