Django的auto_now=True没有自动更新
Posted aguncn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django的auto_now=True没有自动更新相关的知识,希望对你有一定的参考价值。
auto_now=True自动更新,有一个条件,就是要通过django的model层。
如create或是save方法。
如果是filter之后update方法,则直接调用的是sql,不会通过model层,
所以不会自动更新此时间。官方解释:
What you consider a bug, others may consider a feature, e.g. usingupdate_fieldsto bypass updating fields withauto_now. In fact, I wouldn‘t expectauto_nowfields to be updated if not present inupdate_fields.
解决办法:
强制改成save()或是update时,带上时间。
如下:
status_item = DeployStatus.objects.get(name=status_name) DeployImage.objects.filter(name=order_name).update( deploy_status=status_item, change_date=datetime.now()) # 上面的操作,才会更新DeployImage表里的change_date(add_now=True)的时间, # 或是如下调用save()方法 # deploy_item = DeployImage.objects.get(name=order_name) # deploy_item.deploy_status = status_item # deploy_item.save()
以上是关于Django的auto_now=True没有自动更新的主要内容,如果未能解决你的问题,请参考以下文章
Django在admin模块中显示auto_now_add=True或auto_now=True的时间类型列
python Django:如何使用auto_now = True手动设置/更新DateTimeField字段