DjangoORM操作之其他知识点
2024-09-02 20:37:01
一、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原因如下
第一步:
第二步:
么有刷新数据库,直接执行了正确的操作,就会变成上面的结果
最新文章
- SpringMVC国际化
- 提高Visual Studio开发性能的几款插件
- Maven-常用命令
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
- Winforms-GePlugin-Control-library
- YII的关联查询
- com.google.guava 包解析 ——Google Guava官方教程(中文版)
- js html5 仿微信摇一摇
- Java基础笔记-异常
- vs 2005 在IE下断点不起作用
- linux杂记(十四)CAJ文档阅读方法
- 201521123080《Java程序设计》第13周学习总结
- 1. github配置
- Confluence 6 数据库表-系统信息(System information)
- CQOI2018 简要题解
- kvm qemu ,ubuntu debian rootfs 通过qemu复现路由器漏洞
- excel的操作
- springmvc initial初始化
- 我们一起来聊聊并发吧,one。
- Apache配置虚拟主机后让其他电脑访问
热门文章
- Eclipse无Server或者Tomcat8.5解决办法
- Python---6条件判断与循环
- 使用Win10自带的虚拟机安装Linux
- [大餐]开发摘记1--我的Fragment通信的框架
- makefile(3)函数
- Python——1变量和数据类型(内含其他知识点链接)
- OLE DB访问接口“MICROSOFT.JET.OLEDB.4.0”配置为在单线程单位模式下运行,所以该访问接口无法用于分布式
- python之面向对象02
- C#开发BIMFACE系列36 服务端API之:回调机制
- npm发布包的那些事