繁体   English   中英

Django-如何过滤ManyToMany关系?

[英]Django - how to filter ManyToMany relations?

我的项目中有一个Translator模型。 此模型具有ManyToManyField languages_verified (已验证(verbose_name ='users_languages_verified')和languages_not_verified 我想获取至少一个languages_verified集的所有Language对象。

因此,如果翻译器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',因为它们不是至少一种language_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...可能更快,但我找不到解决方案。

您应该只能够使用反向关系。

Language.objects.exclude(users_languages_verified=None)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM