django查询
1.F查询
Django 提供 F() 来做这样的比较。F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。
# 查询出卖出数大于库存数的商品
from django.db.models import F
ret1=models.Product.objects.filter(maichu__gt=F('kucun'))
print(ret1)
F可以帮我们取到表中某个字段对应的值来当作我的筛选条件,而不是我认为自定义常量的条件了,实现了动态比较的效果
Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。基于此可以对表中的数值类型进行数学运算
# 将每个商品的价格提高50块
models.Product.objects.update(price=F('price')+50)
filter() 等方法中逗号隔开的条件是与的关系。 如果你需要执行更复杂的查询(例如OR语句),你可以使用Q对象。
#将每个商品的价格提高50块
from django.db.models import Q
models.Product.objects.filter(Q(maichu__gt=100)|Q(price__lt=100))
我们可以组合& 和| 操作符以及使用括号进行分组来编写任意复杂的Q 对象。
同时,Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询。
# 查询产品名包含新款, 并且库存数大于60的
odels.Product.objects.filter(Q(kucun__gt=60), name__contains="新款")
由多模型类条件查询一模型类数
据语法如下
关联模型类名小写属性名条件运算符=值
注意:如果没有运算符部分,表示等于。
本文作者: 永生
本文链接: https://yys.zone/detail/?id=208
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
评论列表 (0 条评论)