2013-09-10 4 views
5

У меня есть таблица GAE Datastore с полем массива в ней (содержащая несколько строк). Я хотел бы отфильтровать эту таблицу на основе всех полей массива, содержащих определенную строку. Как я могу это сделать? Я не видел оператора «содержит» в GQL, а оператор «in» работает наоборот. Нужно ли мне просто перебирать все сущности и выполнять проверку?Google App Engine - запрос для массивов, содержащих значение

(P.S. Я использую Python в своей работе с GAE).

ответ

5

просто использовать равный, например:

class MyModel(db.Model): 
    colors = db.StringListProperty() 

MyModel(colors=['red', 'blue']).put() 
MyModel(colors=['green', 'blue']).put() 
MyModel(colors=['red', 'green']).put() 

color = 'red' 
query = MyModel.gql('WHERE colors = :1', color) 
models = query.fetch(10) 

assert len(models) == 2 
+0

отлично работает, спасибо !!! –