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())