在做项目时有如下需求,比如一个数据库db有两个数字型字段a和b,现想查询10<=b-a<=20的字段,如何实现?
我的方法:
变换条件用F方法查询:
#先查询前半部分,b-a>=10,条件可换为b>=a+10
result1=db.object.filter(b__gte=(F(a)+10))
#再查后半部分,b-a<=20,条件换为b<=a+20
result2=db.object.filter(b__lte=F(a)+20))
#最后结果
result=restult1&result2
也可再加入Q方法简化为一次查询:
result=db.object.filter(Q(b__gte=(F(a)+10)))&Q((b__lte=F(a)+20)))
以上为我使用的方法,有更好的方法的欢迎留言探讨交流。