2016-10-13 18 views
1

Django RESTフレームワークを使用して、複数のモデルオブジェクトを「一緒に」、つまり単一のトランザクションで作成したいと考えています。Django RESTフレームワークでトランザクションを使用するには?

目的は、各オブジェクトがトランザクションの終了時にのみ表示されることです。

どうすればいいですか?後のあなたは、データベース操作を実行する機能の周りのデコレータとしてdjango.db.transactionから

答えて

1

使用atomic

obj_listは人口(ただし、保存されていない)モデルオブジェクトのリストが含まれている場合、これは1の一環として、すべての操作を実行しますがトランザクション。あなたは(たとえば)、その後、同じAPIリクエストの一部として、複数のオブジェクトを保存したい場合、それらはすべて同じ型の場合、その後、あなたはAPIへのオブジェクトのリストを投稿できる

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

エンドポイント - 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

関連する問題