0
我的项目中有一个Translator
模型。此型号具有ManyToManyField
languages_verified
(verbose_name ='users_languages_verified')和languages_not_verified
。我想获取至少一个languages_verified
集合中的所有对象Language
。Django - 如何过滤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...
,这可能会更快,但我找不到解决方案。