一、F与Q查询

F查询

F查询的应用场景主要是当你想要查询字段需要与数据库中的另外一个字段进行比较的时候,基于我们前面所学的知识点无法完成,那就需要用到F查询。

F的导入

from django.db.models import F,Q

F查询的使用

class Product(models.Model):
name = models.CharField(max_length=32)
price = models.DecimalField(max_digits=8, decimal_places=2)
maichu = models.IntegerField()
kucun = models.IntegerField() def __str__(self):
return '这是商品:%s'%self.name

models中创建表

基于models表做的几个F查询的练习

    #查询卖出数大于500的商品
res = models.Product.objects.filter(maichu__gt=500)
print(res)
from django.db.models import F,Q
# 查询卖出数大于库存数的商品
res = models.Product.objects.filter(maichu__gt=F('kucun'))
print(res) #查询卖出数小于库存数
res = models.Product.objects.filter(maichu__lt=F('kucun'))
print(res) #将所有的商品的价格提高100块
res = models.Product.objects.update(price=F('price')+100)
print(res)

F查询练习

其实通过上面的练习,你也发现了F查询的本质其实就是给你一个字符串形式的字段,你可以直接拿出这个字段在数据库中存储的值,然后可以对拿到的这个值进行操作。和其他字段值的比较,将当前字段的值全部加100等...但是,如果想让你给当前的字段加一个后缀,怎么实现呢?这还不简单,来,看我秀!

#将所有的商品后面都加上一个爆款

    models.Product.objects.update(name=F('name')+'爆款')

然后一执行,哎呀,怎么回事,小老弟,怎么会这样

再次尝试

bug原因如下

第一步:

第二步:

么有刷新数据库,直接执行了正确的操作,就会变成上面的结果

最新文章

  1. SpringMVC国际化
  2. 提高Visual Studio开发性能的几款插件
  3. Maven-常用命令
  4. 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
  5. Winforms-GePlugin-Control-library
  6. YII的关联查询
  7. com.google.guava 包解析 ——Google Guava官方教程(中文版)
  8. js html5 仿微信摇一摇
  9. Java基础笔记-异常
  10. vs 2005 在IE下断点不起作用
  11. linux杂记(十四)CAJ文档阅读方法
  12. 201521123080《Java程序设计》第13周学习总结
  13. 1. github配置
  14. Confluence 6 数据库表-系统信息(System information)
  15. CQOI2018 简要题解
  16. kvm qemu ,ubuntu debian rootfs 通过qemu复现路由器漏洞
  17. excel的操作
  18. springmvc initial初始化
  19. 我们一起来聊聊并发吧,one。
  20. Apache配置虚拟主机后让其他电脑访问

热门文章

  1. Eclipse无Server或者Tomcat8.5解决办法
  2. Python---6条件判断与循环
  3. 使用Win10自带的虚拟机安装Linux
  4. [大餐]开发摘记1--我的Fragment通信的框架
  5. makefile(3)函数
  6. Python——1变量和数据类型(内含其他知识点链接)
  7. OLE DB访问接口“MICROSOFT.JET.OLEDB.4.0”配置为在单线程单位模式下运行,所以该访问接口无法用于分布式
  8. python之面向对象02
  9. C#开发BIMFACE系列36 服务端API之:回调机制
  10. npm发布包的那些事