Как выполнить массовое_обновление в связанных полях, измененных с помощью только одного вызова

Я работаю с двумя таблицами, чтобы изменить некоторые данные в них, но я хочу избежать двух вызовов, используя bulk_update следующим образом:

queryset = MyModel.objects.all()
submodels_to_upcate = []
for instance in queryset:
    instance.submodel = process()
    instance.submodel.sub_property = some_random_data()
    submodels_to_update.append(instance.submodel)

MyModel.objects.bulk_update(queryset, ['submodel'])
SubModel.objects.bulk_update(submodels_to_update, ['sub_property'])

Что я хотел сделать, это что-то вроде следующего:

MyModel.objects.bulk_update(queryset, ['submodel', 'submodel__sub_property'])

Мой вопрос в том, есть ли способ достичь bulk_update в двух разных таблицах одновременно.

Как это документировано здесь

Этот метод эффективно обновляет заданные поля на предоставленных экземплярах модели, как правило, одним запросом, и возвращает количество обновленных объектов.

Заметка: updates the given fields on the provided model instances Он может обновлять поля только в предоставленных экземплярах модели. Как указал @jerch

Метод update() применяется мгновенно, и единственное ограничение на обновляемый QuerySet заключается в том, что он может обновлять только столбцы в главной таблице модели, а не в связанных моделях." Внутри bulk_update используется метод update, поэтому и существует ограничение.

Вернуться на верх