我需要重新保存所有模型
Users.objects.all()。更新(活性= TRUE)
在模型中:
def save(self, *args, **kwargs):
self.url = "XYZ"
super(User, self).save(*args, **kwargs)
但是,上述内容不会触发这些模型上的save()
方法。所以没有设置url = XYZ。这可能吗?
更新
看起来我不能使用.update()我尝试过这个:
>>> objects = Users.objects.all()
>>> for item in objects:
... item.save()
答案 0 :(得分:3)
不,这是impossible:
意识到update()在SQL级别进行更新,因此不会在模型上调用任何save()方法,也不会发出pre_save或post_save信号(这是调用Model.save的结果) ())。如果要为具有自定义save()方法的模型更新一组记录,请循环遍历它们并调用save()
$ ./manage.py shell
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.contrib.auth.models import User
>>> for u in User.objects.all():
... u.is_active = True
... u.save()
...
>>>