Запросы для значения, существующего в свойстве списка модели в AppEngine

Демонстрационная модель:

  class Foo(db.Model):
     id = db.IntegerProperty()
     bar = db.ListProperty(int, required=True)
  1. Как я могу запросить использование или Запрос или GqlQuery для возврата всех объектов Foo, которые имеют данное значение в их свойстве панели?

  2. Если у меня есть список идентификаторов, есть ли единственный фильтр, который возвратит все объекты, идентификационное свойство которых находится в том списке?

9
задан mshafrir 11 August 2010 в 03:33
поделиться

1 ответ

1.

Если вы используете запрос равенства для свойства списка, он проверит все элементы в списке:

search = 2
results = Foo.all().filter('bar =', search).fetch()

2.

Вы можете использовать фильтр IN, но имейте в виду, что при этом выполняется внутренний запрос хранилища данных для каждого элемента в списке, поэтому он может быть медленным, а также существует максимум 30 внутренних запросов на запрос.

items = [1, 2, 3]
results = Foo.all().filter("id IN", items).fetch()

См. Введение в запросы для получения подробной информации о 1 и 2 и ListProperty для получения дополнительных сведений о 1.

7
ответ дан 4 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: