为了澄清,我有几千个属性项目,每个都有一个'present'字段(等等)。要重置系统以再次使用,我需要将每个项目的“属性”字段设置为false。现在,当然还有最简单的方式做到这一点,这就是:如何快速设置一个Django模型的所有实例的字段?
for obj in Property.objects.all():
obj.present = False
obj.save()
但是,这需要近30秒我的开发服务器上。我觉得必须有一个更好的办法,所以我试图用限制Django的only
查询集加载的字段:
for obj in Property.objects.only('present'):
obj.present = False
obj.save()
无论出于何种原因,这其实需要更长比刚开整个对象。
因为我需要将所有这些值不加区分地设置为False,有没有更快的方法?除了'go do it'命令之外,这个函数没有用户输入,所以我觉得一个原生的SQL命令是一个安全的选择,但我不知道SQL足以起草这样的命令。
谢谢大家。
如何更新? 'Property.objects.all()。update(present = False)' – karthikr 2014-08-27 17:50:29