Construir un GQL de consulta (Google App Engine) que tiene una condición en ReferenceProperty

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

  •  21-08-2019
  •  | 
  •  

Pregunta

Decir que tengo el siguiente modelo:

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)

Y digamos que tengo un objeto de la Estación almacenada en el departamento de var foo.

¿Cómo puedo montar una GQL consulta que devuelve todos los objetos de Programación con una referencia a la Estación del objeto al que hace referencia foo?

Este es mi mejor (aunque incorrecta) intento de formar una consulta:

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

Una vez más foo es un La estación de objeto

¿Fue útil?

Solución

No debe ser la inserción de los datos del usuario en una cadena GQL mediante sustitución de cadenas. GQL apoya la sustitución de parámetros, por lo que se puede hacer esto:

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

o, utilizando la interfaz de consulta:

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

Otros consejos

Una cosa más fácil que hacer es cambiar la definición del modelo añadiendo el campo 'COLLECTION_NAME' a la ReferenceProperty:

  

estación = db.ReferenceProperty (estación, requeridos = True, COLLECTION_NAME = "listas")

A continuación, sólo se puede hacer:

  

foo.schedules

cada vez que desee obtener los horarios todas las emisoras.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top