Django知识库:save()方法更新部分字段update
https://zhuanlan.zhihu.com/p/141163420?from_voters_page=true
杜赛
还是小菜鸟呢
开发个人博客时,博客文章的模型通常包含有浏览量计数、最近更新时间两个字段,像这样:
class Post(models.Model): # 文章浏览量 views = models.IntegerField(default=0) # 最近更新时间 updated = models.DateTimeField(auto_now=True) # other fields... # 增加浏览量的方法 def increase_view(self): self.views += 1 self.save()每当访客打开文章详情页面时,浏览量需要 +1,所以在视图调用 increase_view:
def some_view(request, id): post = Post.objects.get(id=id) post.increase_view() ...还有更好的自增方式,后面章节再讲。
这样弄的结果就是浏览量虽然正确的增加了,但是最近更新时间 updated 也一起更新了,这显然不是我们想要的。
正确的写法是要传入 update_fields 参数,控制需要更新的字段:
...def increase_view(self): self.views += 1 self.save(update_fields=['views'])这样就可以只更新 views 字段了,其他字段都保持原状。
赞 (0)