2011-01-25 3 views
2

GAE의 데이터 저장소를 조금만 조작하면 결과를 필터링 할 수 없다는 것을 알았습니다. 다중 값 속성에서 '! ='부등호 필터를 사용하면 결과가 필터링됩니다.GQL : 다중 값 속성의 필터가 같지 않음

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' """) 

문제는이 쿼리 E1E2를 모두 반환하지만 난 단지 E2를 원하는 것입니다.

적어도 하나의 값이! = 'tag2'인 경우 불균형 필터가 ANY로 평가되므로이 문제가 발생한다고 생각합니다. 모든 필터를 적용 할 수있는 방법이 있습니까? (모든 값이! = ' ?이 tag2 ')

내가 GAE의 데이터 저장소는 관계형 아니라는 것을 알고 있지만 내가 원하는 교묘/쿼리 이런 종류의 생각 해결하는 방법을 알고

감사합니다;.)

답변

0

나에 대한 생각했습니다 이 뭉치와 나는 그것을 할 수있는 좋은 방법이 있다고 생각하지 않는다. 내 비 영리 솔루션은 StringListProperty을 사용하지 않는 및 필터의 무리 단계적으로하는 것입니다

class Entry(db.Model): 
    ... 
    tag_1 = db.StringProperty(); 
    tag_2 = db.StringProperty(); 
    ... 
Entry.all().filter('tag_1 !=', tag).filter('tag_2 !=', tag) ... 

나는이 솔루션 명백한 문제를 설명하기 시작하지 않을거야,하지만 적어도 당신이 원하는 않습니다.

+0

감사합니다. 다른 (쉬운) 방식으로 문제를 해결했습니다. –

+1

Gianluca Bargelli. 나와 다른 사람들을 도울 수있는 솔루션을 공유해 주시겠습니까? – luckykrrish

관련 문제