0
私のプロジェクトにTranslator
モデルがあります。このモデルはManyToManyField
languages_verified
(verbose_name = 'users_languages_verified')とlanguages_not_verified
です。私は少なくともlanguages_verified
に設定されているすべてのLanguage
オブジェクトを取得したいと思います。Django - ManyToMany関係をフィルタリングする方法は?
だから、翻訳者xとyの場合:(彼らは、少なくとも1つのlanguages_verifiedセットに含まれていないので、ない 'SK' や 'CZ')
x.languages_verified = ['FR','EN']
x.languages_not_verified = ['RU','SK']
y.languages_verified = ['RU']
y.languages_not_verified = ['SK','CZ']
その後、出力は['FR','EN','RU']
だろう
それはです
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...
のような多くの魔法のフィルタトリックがありますが、これはおそらくもっと高速かもしれませんが、解決策を見つけることができません。