如何用Django QuerySet检查PostgreSQL中是否存在指定数据?
解决Django QuerySet验证双字段存在的问题
你的问题出在filter条件的写法上,&在这里被当成了Python的位运算符,而非Django QuerySet的逻辑与判断,这会导致语法错误或逻辑失效。以下是两种正确的实现方式:
方式一:多条件逗号分隔(推荐,简洁直观)
Django QuerySet的filter方法中,多个参数默认是**逻辑与(AND)**关系,直接用逗号分隔即可:
# 注意变量名统一小写,避免和关键字/模型字段混淆 name = "John" surname = "Lee" exists = Employee.objects.filter(ref_name=name, ref_surname=surname).exists()
方式二:使用Q对象(适合复杂逻辑场景)
如果需要结合OR等更复杂的逻辑组合,可以用Django的Q对象,此时&代表逻辑与,|代表逻辑或:
from django.db.models import Q name = "John" surname = "Lee" exists = Employee.objects.filter(Q(ref_name=name) & Q(ref_surname=surname)).exists()
原写法错误原因
原代码里的ref_name=name & ref_surname=Surname会被Python解析为先计算name & ref_surname,但字符串类型不支持位运算,会直接抛出TypeError,完全不符合同时匹配两个字段的逻辑需求。
内容的提问来源于stack exchange,提问作者Gnani Kim
相关产品推荐
相关产品推荐

