You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:35:27