如何用Django QuerySet实现同表字段比较的计数查询?
用Django QuerySet实现同表字段比较的查询
问题原因
你之前的代码报错NameError: name 'minStock' is not defined,是因为你把模型里的minStock字段当成了普通Python变量来用,但Django无法直接识别这是数据库表中的字段,自然找不到这个变量。要实现同一条记录内两个字段的比较(对应SQL里的stockCount < minStock),得用Django的F()表达式。
正确代码实现
首先导入F表达式:
from django.db.models import F
然后执行查询:
Stock.objects.filter(stockCount__lt=F('minStock')).count()
关键说明
F('minStock')会告诉Django:这里的minStock是数据库表的字段,不是Python变量,这样就能在数据库层面完成字段间的比较,和你目标SQL的逻辑完全一致。- 不需要额外加
.all(),filter()本身就会返回QuerySet,直接链式调用即可。
内容的提问来源于stack exchange,提问作者Ahmad Zidni Zainul Ikhsan
相关产品推荐
相关产品推荐

