2013-07-28 42 views
0

這可能是一個非常簡單的問題,但我一直在django文檔中尋找一段時間,但沒有找到答案。如何檢查設置的字段是否包含Django中的特定值?

我的問題是,我想檢查給定的語言,用戶,誰可以說多個,說給定的。

我相關類別:

class Language(models.Model): 
    idiom = models.CharField(max_length=40, unique=True) 

class Profile(UserenaBaseProfile): 
    spoken_languages = models.ManyToManyField(Language, blank = True) 

考慮:query_set = Profile.objects.all()

我已經試過了諸如:

ls = Language.get(idiom="some language here") 

query_set.filter(spoken_languages__idiom__contains=ls.idiom) 
query_set.filter(spoken_languages__contains=ls) 

ls = Language.objects.filter(idiom="some language") 
query_set.filter(spoken__languages__in=ls) 

一些更多的,但沒有成功,它似乎應該很容易,但我仍然找不到正確的方法。任何想法都會得到真正的讚賞。

回答

1

這應該工作:

profiles = Profile.objects.filter(spoken_languages__idiom="language here") 

注意,在查詢集調用.filter()不會改變QuerySet對象。相反,它會創建並返回應用了新過濾器的克隆。所以如果你想過濾現有的查詢集,你應該這樣做:

query_set = query_set.filter(spoken_languages__idiom="language here") 
相關問題