Я ищу способ обновления нескольких объектов более эффективно, чем вызов .save()
на каждом из них.Как сохранить объекты навалом с помощью django 1.6
У меня есть код, который использует .filter()
для загрузки объектов. Затем он связывается с внешней службой, чтобы решить, что нужно делать с каждым объектом. Наконец, у меня есть список объектов с обновленными значениями, которые мне нужно сохранить.
Этот код работает, но слишком медленно:
for o in l: o.save()
Поиск предложений, которые я до сих пор нашел .bulk_create()
и .update()
bulk_create
отлично работает для новых объектов. Но замена выше цикла на model.objects.bulk_create(l)
дает IntegrityError: UNIQUE constraint failed:
, вероятно, потому, что он пытается создавать новые объекты, а не обновлять существующие объекты.
Использование .update()
также не применимо к моему прецеденту, так как оно обновит все объекты в наборе с тем же значением. В моем случае я вычислил другое значение для каждого из объектов, которые мне нужно сохранить.
Есть ли более быстрое решение, чем вызов .save()
на каждый объект?
Я не называю 'save' на всех объектах, которые я получил. Я просматриваю все объекты, выполняя некоторые вычисления в памяти. Те объекты, которые изменены этим вычислением, присоединяются к новому списку. Список, который я хочу сохранить в конце, содержит только те объекты, которые были изменены. – kasperd
ahhh, хорошо, я буду обдумывать это в глубине моего разума. – mdw7326