我以前一直是用request.user==obj.user进行校验,用来校验用户对这条信息是否有修改过查看等权限
最近偶然看了一下debugtoolbar里的sql数量,怎么有好几十条,而且很多都是一样的查询都是select user表
查一下调用记录显示都是来自request.user==obj.user这里,看来这样写是会让数据库去查询,而一页数据几十条就要查询几十次,炒鸡浪费系统资源,于是改为下面的校验就不会有问题了。
if request.user.id==obj.user_id :
pass
这个是直接取obj的user外链的id,而不用去查询数据
网友评论