【发布时间】:2014-09-19 19:26:17
【问题描述】:
我正在寻找一种方法来更新多个对象,而不是在每个对象上调用.save()。
我有代码,它使用.filter() 加载对象。然后它与外部服务进行通信,以确定每个对象需要做什么。最后,我有一个包含更新值的对象列表,我需要保存它。
这段代码可以工作,但是太慢了:
for o in l: o.save()
搜索我目前找到的建议.bulk_create() 和.update()
bulk_create 适用于新对象。但是用model.objects.bulk_create(l) 替换上面的循环会产生IntegrityError: UNIQUE constraint failed:,可能是因为它试图创建新对象而不是更新现有对象。
使用.update() 似乎也不适用于我的用例,因为它将使用相同的值更新集合中的所有对象。在我的例子中,我为每个需要保存的对象计算了不同的值。
有比在每个对象上调用.save() 更快的解决方案吗?
【问题讨论】:
标签: python django-1.6