Django model update(修改) 修改时间并没有触发的问题

我们都知道 django 里面模型设计 一般会有常用的两个字段  创建时间 和 修改时间,这两个字段的定义是这样的:

    created = models.DateTimeField(auto_now_add=True, verbose_name="添加时间")
    updated = models.DateTimeField(auto_now=True, verbose_name="更新时间")

一般来说,你对这个表的数据有修改的时候,修改时间会随之变动,但是我遇到一个情况,是即使你修改了这条数据的内容,但是修改时间并没有变动。

问题解决:

修改更新有两种方法

1)save

修改模型类对象的属性,然后执行save()方法

hero = HeroInfo.objects.get(hname='猪八戒')
hero.hname = '猪悟能'
hero.save()

2)update

使用模型类.objects.filter().update(),会返回受影响的行数

HeroInfo.objects.filter(hname='沙悟净').update(hname='沙僧')

第一种修改更新的方法是会触发updated = models.DateTimeField(auto_now=True, verbose_name="更新时间")字段的更新时间的,第二种不会触发。

所以如果你更新的数据没有触发更新时间,检查是否用了第二种方法,换成第一种修改的方式就可以了。

解决:

如果要用 update 这种方法修改多条数据,触发更新时间的字段,可以这样做:

加一条修改数据,把修改时间这个字段修改成当前时间就可以了。

StockChange.objects.filter(order_no=order_no).update(status=2, updated=datetime.now())

 

更详细的内容借鉴:http://www.chenxm.cc/post/658.html

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值