Как получить объекты модели один за другим в Django

#python #django #python-3.x

#python #django #python-3.x

Вопрос:

Мне нужно создать функцию, которая будет запускаться в celery и будет по очереди брать записи из модели, проверять что-то и записывать данные в другую модель с отношением onetoone. Существует много записей, и использование model_name.objects.all () не подходит (это займет много памяти и времени), как это сделать правильно.

Комментарии:

1. можете ли вы опубликовать то, что вы тоже пробовали?

2. Я не знаю, что попробовать, поэтому я спросил

3. Можете ли вы выполнить итерацию по своей модели с помощью id?

4. Должно быть что-то, что можно записывать пакетами

Ответ №1:

Вы можете использовать итератор над набором запросов https://docs.djangoproject.com/en/dev/ref/models/querysets/#iterator таким образом, ваши записи извлекаются одним

 model_iterator = your_model.objects.all().iterator()
for record in model_iterator:
    do_something(record)