Демонстрационная модель:
class Foo(db.Model):
id = db.IntegerProperty()
bar = db.ListProperty(int, required=True)
Как я могу запросить использование или Запрос или GqlQuery для возврата всех объектов Foo, которые имеют данное значение в их свойстве панели?
Если у меня есть список идентификаторов, есть ли единственный фильтр, который возвратит все объекты, идентификационное свойство которых находится в том списке?
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.