С 2.2 у нас теперь есть возможность массового обновления: https://docs.djangoproject.com/en/3.0/ref/models/querysets/#bulk -update
У меня есть модель, скажем, с миллионами строк, и я хочу эффективно обновить все записи. Я пытаюсь использовать bulk_update, но это означает, что мне все равно нужно загрузить все объекты модели в памяти, изменить поле одно за другим, а затем использовать массовое обновление:
Что я делаю:
def migrate_event_ip_to_property(apps, schema_editor):
Event = apps.get_model('app' 'Event')
events = Event.objects.all()
for event in events:
if event.ip:
event.properties["$ip"] = event.ip
Event.objects.bulk_update(events, ['properties'], 10000)
Поскольку существуют миллионы записей, могу ли я избежать выполнения Event.objects.all () и загружать все объекты в память даже при использовании bulk_update?