2015-10-06 51 views
0

Django的查詢集濾波器我有一個模型:由陣列

class MyUser(AbstractBaseUser, PermissionsMixin): 
    class Meta(): 
     db_table = 'my_user' 
    ... 
    interests = models.ManyToManyField(Interest, blank=True, db_index=True) 

我必須寫兩個查詢:

1)獲取已interest_id MyUsers = 1或5或4

2 )獲取具有interest_id = 1和5和4的MyUsers。

我的數據庫是PostgreSQL。

我寫SQL查詢第一種情況:

SELECT DISTINCT myuser_id FROM my_user_interests WHERE interest_id = ANY(array[1,5,4]); 

,但我不能wtire它的第二種情況。

反正我需要Django的ORM做到這一點,因爲我還需要做編輯這個查詢集的新參數,如果我用.RAW()我不能這樣做..

請幫助我。

+2

你試過:https://docs.djangoproject.com/en/1.8/ ref/models/querysets /#in? – Brandon

+0

SQL與'... WHERE interest_id IN [1,5,4]')有什麼不同? –

+0

布蘭登,是的,但它不正確。用戶= users.filter(interests__in = [1,5,4]) 丹尼爾,ERROR:語法錯誤處或附近 「[」 LINE 1:... CT * FROM my_user_interests WHERE interest_id IN [1,5,4 ] – Anton

回答

0

我已經解決了這個問題/

1)

users = users.filter(interests__in=[1, 5, 4]) 

2)

list_ = [1, 5, 4] 
for i in len(list_): 
    users = users.filter(interests=i)