Django-触发自动_now字段更改
我想知道如何重新保存对象以更新“立即自动”字段 著名的是,我想到了这个密码Django-触发自动_now字段更改,django,django-models,Django,Django Models,我想知道如何重新保存对象以更新“立即自动”字段 著名的是,我想到了这个密码 obj = MyModel.objects.get(id=someid) obj.save() 但是如果我有很多对象要更新呢?或者更好地说,更新对象的立即自动字段的最佳方法是什么,使用id值并将其自身设置为触发立即自动字段更改: from django.db.models import F MyModel.objects.filter(something=something).update(id=F('id'))
obj = MyModel.objects.get(id=someid)
obj.save()
但是如果我有很多对象要更新呢?或者更好地说,更新对象的立即自动
字段的最佳方法是什么,使用id
值并将其自身设置为触发立即自动
字段更改:
from django.db.models import F
MyModel.objects.filter(something=something).update(id=F('id'))
最后,我在每个对象上使用
save()
来更新auto\u now
字段
正如Daniel所说,update()
实际上不会更新auto\u now字段,因为它直接执行SQL更新,而auto\u now
字段是在Python代码中设置的
所以我做了:
obj = MyModel.objects.get(id=someid)
obj.save()
对于多个对象:
objs = MyModel.objects.all()
for obj in objs:
obj.save()
从未使用过
F
,直到现在,时间终于到了。谢谢男人:)@doniyor再次感谢你收集的另一个有趣的问题:)永远是我的荣幸!;)这实际上不适用于更新auto_now字段,因为update
执行直接SQL更新,而auto_now是在Python代码中设置的。@doniyor OK,那么最好不接受答案,添加您自己的答案并接受它。这将有助于其他人了解目前的最佳解决方案。谢谢。n+1查询很糟糕!