Как сделать запрос на ReferenceProperties? - PullRequest
1 голос
/ 27 декабря 2010

Предположим:

class Pet (db.model):
  owner = db.ReferenceProperty(User)
  vet = db.ReferenceProperty(Vet)
  name = db.StringProperty()

Как мне запросить домашних животных, у которых есть владелец A и ветеринар B?Я предполагаю, что ссылки в классе Pet являются ключами.Пожалуйста, опубликуйте ссылку, если вы знаете хорошую - я не могу найти хороший пример в документации.

Ответы [ 3 ]

2 голосов
/ 27 декабря 2010

Это ключи.

И вы можете получить их из экземпляра модели или сгенерировать их с нуля.

Фильтр по ключу: Вопрос GQL ReferenceProperty filter

db.GqlQuery("SELECT * FROM Pet WHERE owner = :1 and vet = :2", owner.key(), vet.key())

Pet.all().filter("owner =", owner.key()).filter("vet =", vet.key())

Создание ключей с использованием from_path: Ключ хранилища данных.from_path

Key.from_path(kind, id_or_name, parent=none, namespace=None, **kwds)
Key.from_path('Pet', 'Dr Vet')
Key.from_path('Pet', 123)
0 голосов
/ 27 декабря 2010

Посмотрите на Gqlquery класс:

db.GqlQuery("SELECT * FROM Pet WHERE owner = :1 AND vet = :2", user.key(), vet.key())
0 голосов
/ 27 декабря 2010

После некоторых проб и ошибок я обнаружил, что решение было прямым:

q = Pet.all()
q.filter("owner", owner)
q.filter("vet", vet)
q.get()
...