2016-10-13 3 views
1

Я хочу использовать структуру Django REST для создания нескольких объектов модели «вместе» - то есть в одной транзакции.Как использовать транзакции с картой Django REST?

Цель состоит в том, что каждый из объектов будет отображаться только на (успешном) завершении транзакции.

Как я могу это сделать?

ответ

1

Использование atomic из django.db.transaction как декоратор вокруг функции выполняет операцию базы данных вы после:

Если obj_list содержит список заселенных (но не сохранено) моделей объектов, это будет выполнять все операции в рамках одного сделка.

@atomic def save_multiple_objects(obj_list): for o in obj_list: o.save()

Если вы хотите сохранить несколько объектов в рамках одного и того же запроса API, то (к примеру), если они все же типа, то вы можете опубликовать список объектов к API конечная точка - см. Django REST framework post array of objects

1

Вы можете достичь этого, используя django db transactions. Обратитесь к коду ниже

from django.db import transaction 

with transaction.atomic(): 
    model_instance = form.save(commit=False) 
    model_instance.creator = self.request.user 
    model_instance.img_field.field.upload_to = 'directory/'+model_instance.name+'/logo' 
    self.object = form.save() 

Этот пример взят из моего собственного ответа на этот SO post. Таким образом, before calling save() you can save/edit other dependencies

Смежные вопросы