Python Django:我可以在不过滤所有模型实例的情况下检查模型实例是否与过滤器匹配吗

Python Django:我可以在不过滤所有模型实例的情况下检查模型实例是否与过滤器匹配吗,python,django,django-models,filter,django-queryset,Python,Django,Django Models,Filter,Django Queryset,我有一个模型的实例。我有一个查询集。我是否可以在不过滤所有模型对象的情况下检查实例是否与过滤器匹配 情况: 我有一个模型Alpha,创建此模型时,我需要检查它是否与存储在模型Bravo中的用户定义过滤器匹配。将有许多Alpha模型和许多Bravo模型(过滤器) 我的假设是 if a in Alpha.objects.filter(bravo.get_qs()) 将过滤所有Alpha对象。我不想要这个,因为我不需要检查除“a”之外的任何其他实例,而且会有很多。我不想为每个Bravo对象检查所有A

我有一个模型的实例。我有一个查询集。我是否可以在不过滤所有模型对象的情况下检查实例是否与过滤器匹配

情况: 我有一个模型
Alpha
,创建此模型时,我需要检查它是否与存储在模型
Bravo
中的用户定义过滤器匹配。将有许多
Alpha
模型和许多
Bravo
模型(过滤器)

我的假设是

if a in Alpha.objects.filter(bravo.get_qs())
将过滤所有
Alpha
对象。我不想要这个,因为我不需要检查除“a”之外的任何其他实例,而且会有很多。我不想为每个
Bravo
对象检查所有
Alpha
对象


我愿意接受其他建议,看看我如何做类似的事情。

您可以检查一个查询集是否与
Alpha
中的
a
主键相同,而不是
Alpha.objects.filter(bravo.get_qs())中的
a

alpha=alpha.objects.filter(pk=a.pk)
对于bravo.objects.all()中的bravo:
如果alpha.filter(bravo.get_qs())存在():
#根据哪个“b”用“a”做某事

如果我使用
pk
我不知道哪个
Bravo
匹配。我可以做
Alpha.objects.filter(bravo.get_qs()).exists()
,我不确定
exists
中的
之间有什么区别,也不确定这是否是一种改进。你可以链接过滤器
exists
是对
中的
的改进,因为它还通过主键进行过滤。理想情况下,从第一个筛选器操作返回的QuerySet应该匹配单个记录并返回Alpha实例
if a in Alpha.objects.filter(bravo.get_qs())