栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ORM-F&Q对象

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ORM-F&Q对象

1.F对象

在不提取创建对象的情形进行数据修改
如果没有F对象,按照前面课程的内容,我们要实现一个点赞的功能:
1.创建一个对象,并读取点赞的基数
2.在创建的对象上+1
3.将对象保存回数据库。
这样看似没问题,但是同一时间点有100个人创建了对象并且点赞,基数是10,100个人在点赞后理论的同一时间保存进数据库,那么100个人保存的数据都是10+1,可能100人点赞后,结果是11.相当于100个人提交给数据库的数据是11.
而F对象直接包裹数据库的值,使用F对象相当于提交给数据该字段+=1,利用数据库的锁将100个人串联起来。不会存在100个人取出字段值再保存的情行。相当于100=F个人操作+1

from django.db.models import F
def add_like(request,topic_id):
	topic = Topic.objects.get(id=topic_id)
	topic.like = F('点赞量') + 1
	topic.save()

另外可以对数据库字段值进行比较

from django.db.models import F
from bookstore.models import Book
books = Book.objects.filter(mark_price__gt=F('price'))
for book in books:
	print(book.title,'定价:',book.price,'现价:',book.mark_price)
2.Q对象

或| 与& 非~ 等操作,引用django.db.models中

from django.db.models import Q
# 查找定价和成本都小于20元的书
Book.objects.filter(Q(price__lt=20)|Q(mark_price__lt=20))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739970.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号