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

如何在Peewee中实现类似Django的exclude查询?

在Peewee中实现类似Django的exclude查询

错误原因说明

  • Peewee的模型类没有内置exclude方法,直接调用Feature.exclude(id=1)会触发AttributeError。
  • 用~Feature.get_by_id(1)报错是因为get_by_id()返回的是具体的模型实例对象,而~操作符只能用于Peewee的查询表达式(比如字段与值的比较条件),无法直接对实例取反。

正确实现方式

基础排除:单条件

直接对字段的比较条件取反,传入filter方法即可:

# Feature 是已定义的模型
qs = Feature.filter(~(Feature.id == 1))

也可以用where方法实现相同效果:

qs = Feature.where(~(Feature.id == 1))

复杂条件排除

如果需要组合多个排除条件,用逻辑运算符(|表示或,&表示且)包裹后再取反:

# 排除id=1 或 name为'test'的记录
qs = Feature.filter(~((Feature.id == 1) | (Feature.name == 'test')))

# 排除id=1 且 status为0的记录
qs = Feature.filter(~((Feature.id == 1) & (Feature.status == 0)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:30:47