Django学习 Day9
1.F对象
一个F对象代表数据库中某条记录的字段的信息。
作用:
通常是对数据库中的字段的值在不获取的情况下进行操作
用于类属性(字段)之间的比较。
语法:
From django.db.models import F
F(‘列名’)
例子:
所有Book数据表中的price涨价1元或降价一元。
Book.objects.all().update(price=F(‘price’)+1)
Book.objects.all().update(price=F(‘price’)-1)
F对象能够很好的解决并发情况下对数据加锁的问题。
例如对于账户余额的修改问题。
单线操作的情况下,
User = User.objects.get(id=1)
User.balance = User.balance + 100
User.save()
但是如果用户id=1在多个银行同时存款时,会导致在get时他们的数据在分布式环境中是相同的,这就导致我们需要把这个余额变化的代码看成是一个整体。就需要F对象的帮助。也就是
User = User.objects.get(id=1)
User.balance = F(‘Balance’) + 100
User.save()
通过F对象的帮助,我们能够较好的解决并发情况下的冲突问题。
或者,利用F对象,可以查找在Book表中,price大于id的情况。
2.Q对象
由于filter方法只能实现and的逻辑运算
当在获取查询结果集使用逻辑或|或者是逻辑非~等操作时,可以使用Q对象进行操作。
例如,找出所有定价高于20元或id大于3的书,可以写成:
Book.objects.filter(Q(price__gt=20) | Q(id__gt=3))
除了或操作符 | ,还有& 与操作符、~非操作符。
Django学习 Day9相关推荐
- Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)
MVT流程: 创建Django项目和应用 django-admin startproject name python manager.py startapp name 视图和ULR 视图的请求和响应 ...
- django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!
django学习之路(五)站点管理admin - django - 一直很安静 - Powered by Discuz!: "" (Via.) 转载于:https://www.cn ...
- django 学习笔记
django 学习笔记 启动虚拟机: workon bj18_py3 创建一个项目: django-admin.py startproject mysite 启动开发用服务器:从外层项目 mysite ...
- 分享:Django学习笔记(4)---ManyToMany 添加、删除关联、查询
Django学习笔记(4)---ManyToMany 添加.删除关联.查询 http://my.oschina.net/u/572994/blog/105280
- Django学习总结①
Django学习总结① Django基础环境配置好以后,打开pycharm,创建Django项目 视图views 中需要导入 django.http ---> HttpResponsemodel ...
- Django学习目录
Django学习目录 Django框架简介 Django基础 >>点我 ORM介绍 Django中ORM介绍 >>点我 ORM表操作 Django中ORM表相关操作 >& ...
- Python Web框架Django学习(二)
python web框架Django学习(二) 目录: 三.Django创建APP 四.创建登录页面,实现用户交互,后台管理用户(非数据库方式) ========================= ...
- Django学习之十: staticfile 静态文件
目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述 静态文 ...
- django学习笔记03
原创博客地址:django学习笔记03 第一章,模型层 查询集API 一.QuerySet何时被提交 迭代 QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询 切片:如果使用切片的&q ...
最新文章
- 破纪录了!用 Python 实现自动扫雷!
- 计算机丢失ac1st.dll怎么找回,CAD提示ac1st16.dll丢失修复步骤
- 使用 SCons 代替 Makefile 快速构建应用程序
- Quick Audience组织和工作空间功能解读
- css怎么使元素绝对定位有过度效果_小猿圈web前端讲解div+css绝对定位和相对定位...
- 数据库分库分表的几种方式
- 怎么修改腾讯视频账户和密码
- HTML DOM addEventListener() 方法
- javamail发送邮件(转)
- NOIp2017 题解
- DSP28335加密及解密
- 微软成为雅虎财经2021年年度最佳公司
- 头条python后台一面凉经
- 什么水果有利于饭后消化?
- Mac新手入门功能操作指南!!
- 很有哲理的句子,每天都值得看一遍
- Proxy—Linux服务器代理
- TSQL与PL/SQL的区别
- 2021 回头看看这一年
- 信号的调制与解调matlab仿真,基于MATLAB对信号调制与解调的仿真