2008-11-27 20 views
9

我的一个API调用可能导致更新大量对象(Django模型)。我遇到性能问题这一点,因为我逐一更新每个项目,保存和移动到下一个:在Django中加速批量ORM操作的策略

for item in Something.objects.filter(x='y'): 
    item.a="something" 
    item.save() 

有时候,我的过滤条件看起来像“,其中x在(‘A’,”公元前',...)”。

看来是official answer to this is "won't fix"。我想知道人们用什么策略来提高这些场景的性能。

回答

15

您链接到的门票是用于批量创建 - 如果你不依赖于一个覆盖save方法或前/后保存信号做的位上节省,QuerySet has an update method您可以使用它来执行对过滤行的UPDATE工作:

Something.objects.filter(x__in=['a', 'b', 'c']).update(a='something') 
+0

不错,看起来像它会涵盖了很多案例。会试一试。 – Parand 2008-11-28 06:45:57