2016-11-16 104 views
0

我的項目中有一個Translator模型。此型號具有ManyToManyFieldlanguages_verified(verbose_name ='users_languages_verified')和languages_not_verified。我想獲取至少一個languages_verified集合中的所有對象LanguageDjango - 如何過濾ManyToMany關係?

所以,如果譯者x和y:

x.languages_verified = ['FR','EN'] 
x.languages_not_verified = ['RU','SK'] 
y.languages_verified = ['RU'] 
y.languages_not_verified = ['SK','CZ'] 

那麼輸出將是['FR','EN','RU'](不是 'SK',也沒有 'CZ',因爲他們不是在至少一個languages_verified設置)

會有可能做到這一點,例如這樣:

lang_ver_set = [] 
for language in Language.objects.all(): 
    for translator in Translator.objects.all(): 
     if language in translator.languages_verified(): 
      lang_ver_set.append(language) 
      break 

但我不知道這是如何做到這一點最有效的方式。 Django有很多神奇的濾鏡技巧,比如verbose_name__in...,這可能會更快,但我找不到解決方案。

回答

1

您應該能夠使用反向關係。

Language.objects.exclude(users_languages_verified=None) 
相關問題