【发布时间】:2014-06-02 18:51:18
【问题描述】:
我想知道如何重新保存对象只是为了更新auto_now 字段。
众所周知,我想到了这段代码
obj = MyModel.objects.get(id=someid)
obj.save()
但是如果我有很多对象要更新怎么办?或者更好地说,更新对象的auto_now 字段的最佳方法是什么
【问题讨论】:
标签: django django-models
我想知道如何重新保存对象只是为了更新auto_now 字段。
众所周知,我想到了这段代码
obj = MyModel.objects.get(id=someid)
obj.save()
但是如果我有很多对象要更新怎么办?或者更好地说,更新对象的auto_now 字段的最佳方法是什么
【问题讨论】:
标签: django django-models
我最终在每个对象上使用save() 来更新auto_now 字段。
正如 Daniel 所说,update() 实际上不会更新 auto_now 字段,因为它会直接进行 SQL 更新,而 auto_now 字段是在 Python 代码中设置的。
所以我做到了:
obj = MyModel.objects.get(id=someid)
obj.save()
对于多个对象:
objs = MyModel.objects.all()
for obj in objs:
obj.save()
【讨论】:
如何使用update() 并将id 值设置为自身来触发auto_now 字段更改:
from django.db.models import F
MyModel.objects.filter(something=something).update(id=F('id'))
【讨论】:
F,终于到了。谢谢人:)
update 会直接更新 SQL,而 auto_now 是在 Python 代码中设置的。