2009-12-13 3 views
1

나는 다음과 같은 사용자 모델을 가지고 있으며 '노랑'을 좋아하지만 '빨강'을 좋아하지 않는 모든 사용자를 얻고 싶습니다.항목이 포함되지 않은 StringListProperty를 기준으로 필터링하는 방법은 무엇입니까?

class User(db.Model): 
    name = db.StringProperty(required=True) 
    favorite_colors = db.StringListProperty(required=True) 

이 작동 (적어도 하나 개의 좋아하는 색상 '노란색'반환 된 모든 사용자) :

results = db.GqlQuery(
    "SELECT * FROM User " 
    "WHERE favorite_colors = 'yellow'") 

을하지만 내가 무엇을 기대하지 않습니다

results = db.GqlQuery(
    "SELECT * FROM User " 
    "WHERE favorite_colors = 'yellow' " 
    "and favorite_colors != 'red'") 

동일한 사용자 목록이 리턴됩니다. 내가 좋아하는 색상 중 하나가 '빨간색'과 다를 경우 목록에 '빨간색'이 전혀 포함되지 않은 경우가 아니라고 판단됩니다.

항목을 포함하고 다른 항목이 아닌 결과 만 필터링하려면 어떻게해야합니까?

답변

1

항목이없는 경우 필터링 할 수 없습니다. 두 번째 쿼리는 목록에 '노란색'항목이있는 모든 사용자와 '빨간색'이 아닌 항목을 하나 이상 찾습니다.

항목이 제한되어있는 경우 "노랑색", "파란색이 아닌", "빨간색이 아닌"과 같은 'not'항목을 포함하도록 표현을 변경하고 싶을 수 있습니다. 그렇지 않으면 Python 코드에서 필터링을 수행해야합니다.

+1

"색상"세트에 ~ 3k 개 항목과 "사용자"~ 40k가 있고 데이터 저장소 API가 처음 1000 개 결과 만 반환하기 때문에 파이썬 코드에서 필터링을 수행 할 수 있는지 여부는 알 수 없습니다. . 어쨌든 고마워! – jbochi

관련 문제