如何在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
相关产品推荐
相关产品推荐

