Немного повозившись с хранилищем данных GAE, я обнаружил, что не могу придумать правильный способ отфильтровать результатов, используя фильтр неравенства '! =' Для многозначного свойства:
class Entry(db.Model):
...
tags = db.StringListProperty()
e1 = Entry()
e2 = Entry()
e1.tags = ['tag1', 'tag2', 'tag3']
e2.tags = ['tag1', 'tag3', 'tag4']
# I want to exclude all the results containing 'tag2'
db.GqlQuery("""SELECT * FROM Entry
WHERE tags != 'tag2' """)
Проблема в том, что этот запрос возвращает e1 и e2 , но я хочу только e2 .
Я думаю, что это происходит потому, что фильтр неравенства оценивается как ЛЮБОЙ (ИСТИНА, если хотя бы одно значение равно! = 'Tag2'. Есть способ применить фильтр ко ВСЕМ? (ИСТИНА, если все значения есть! = 'Тег2 «)
Я знаю, что хранилище данных GAE не реляционное, но я хотел бы знать, как умно решать / думать такого рода запросы.
Спасибо;)