[英]Django manytomany filter either (relations=none or exclude if any relation=x)
[英]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.