Django中的F表达式来解决丢失修改问题

在Django开发博客系统时,为统计每篇博文的访问量,最初使用了简单方法。后来通过官方文档了解到F表达式,它是一个SQL构造,用于描述数据库上的操作。F表达式避免了Python中的赋值操作,直接在数据库层面处理增量更新,确保了更新的正确性。因此,代码使用F表达式进行改进。
摘要由CSDN通过智能技术生成

在使用django开发自己的博客的时候,有一个就是统计每一片博文的访问次数。一开始是这样实现的:

def readArticle(req,article_id):
	article = Article.objects.get(id=article_id)
	article.read_time+=1 #read_time就是一片博文的访问次数
	article.save()
	return render(req,"article.html",{'post':article,'post_read_time':post_read_time})#把值传到模板中

后来越想越觉得不对。如果两个用户,在第一个用户访问,代码执行到article.save()之前,第二个用户开始访问了,这样,第一个用户的加一操作会被第二个用户的操作覆盖,这就是所谓的“丢失修改”问题。

后来查阅了很多文档,终于还是在Django的官方文档中发现了F表达式这个东西。这个东西就是用于代表参数中的属性的值。

官方文档如此介绍:

from django.db.models import F

reporter = Reporters.objects.get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值