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

如何在Django查询筛选中匹配数据库字段?

在Django ORM中实现字段与字段的匹配查询

嘿,这个问题我之前也踩过坑!你直接写column1=column2的话,Django会把column2当成一个普通的Python变量来解析,而不是数据库表中的字段,所以根本达不到你要的「字段等于字段」的查询效果。

要实现SQL里column1=column2这种字段间的比较,你需要用到Django提供的F表达式,它专门用来引用模型的字段值,直接在数据库层面完成字段间的运算或比较,不用把数据拉到Python内存里处理。

具体步骤:

  1. 首先导入F类:
from django.db.models import F
  1. 修改你的查询语句,用F('字段名')来替代直接写字段名:
qs = Docs.objects.filter(mlal_id_no=8, column1=F('column2'))

这样生成的SQL就完全符合你的需求了:

SELECT * FROM docs WHERE mlal_id_no=8 AND column1=column2;

额外小技巧:

F表达式还支持字段间的运算,比如你想查询column1比column2大5的记录,可以这么写:

qs = Docs.objects.filter(column1=F('column2') + 5)

另外注意一下,Django的模型类通常是首字母大写的(比如Docs而不是docs),如果你的模型确实命名为小写的docs那没问题,但建议遵循PEP8规范来命名模型类哦。

内容的提问来源于stack exchange,提问作者user12510360

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 09:47:45