2008-11-27 26 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