Создайте запрос GQL (для Google App Engine), содержащий условие ReferenceProperty.

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, хранящийся в переменной var. foo.

Как составить запрос 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())

Другие советы

Еще проще — изменить определение модели, добавив поле «collection_name» в ReferenceProperty:

станция = db.ReferenceProperty(Station, require=True, Collection_name="расписания")

Тогда вы можете просто сделать:

foo.schedules

всякий раз, когда вы хотите получить расписание всех станций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top