According to http://www.django-rest-framework.org/api-guide/serializers/#writable-nested-representations, in order to accept a nested serializer I need to create an up
first import transaction module from db, and then use the following
with transtaction.atomic():
pass
This will ensure the atomicity and consistency of your data into database.
The related PR is unrelated to your question. PR is linked to the DRF specific exception handler that bypassed the default Django transaction scheme (https://github.com/tomchristie/django-rest-framework/pull/1204#issuecomment-52712621).
DRF doesn't specifically wrap things in a transaction to leave the users free to choose whatever they want to.
You can also use Django's ATOMIC_REQUESTS
database setting which will apply a transaction before the execution of each request and commit it if the request finishes successfully. More information here:
Database transactions - Tying transactions to HTTP requests