2009-12-13 64 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

您無法過濾沒有物品。第二個查詢查找列表中包含項目「黃色」的所有人以及至少一個不是「紅色」的項目。

如果您的項目集有限,您可能需要更改您的表示以包含「不」條目 - 例如「黃色」,「不是藍色」,「不是紅色」。否則,你需要在Python代碼中進行過濾。

+1

我不知道我是否能夠在Python代碼中進行過濾,因爲我的「顏色」設置有〜3k個項目,「用戶」〜40k,數據存儲API只返回前1000個結果。 。 無論如何,謝謝! – jbochi

相關問題