title: Django Unable to rollback with try-exception block for atomic transactions
body: <p>One of my view in Django executes save operations on 6-7 tables. I want these transactions to be atomic I,e if the 5th or 6th transaction fail I want to rollback all the previous saves.
  The view contains a try-except block to handle the exceptions raised.</p>
  
  <p>It looks something like this:</p>
  
  <pre><code>@transaction.atomic
  def my_view(request):
      sid = transaction.savepoint()
      try:
          Table1.save()
          Table2.save()
          Table3.save()
          Table4.save()
          Table5.save()
          Table6.save()
          Table7.save()  # This might fail. In case of failure I want to rollback saves from Table1 to Table6
  
          transaction.savepoint_commit(sid)
      except Exception as e:
          print(str(e))
          transaction.savepoint_rollback(sid)
          return JsonResponse({"Status": 0, "Data": str(e)}) 
  </code></pre>
  
  <p>I've tried the above and Table7.save() has failed and Table1 to Table6 rollback has not happened.
  I want to return the JSON response as <code>{"Status": 0, Data: "Error That occurred"}</code> in all the cases.
  I don't want to re-raise the exception in except block as done in <a href="https://stackoverflow.com/questions/34730385/django-rollback-save-with-transaction-atomic">This link</a></p>
  
  <p>What should I do to return a proper JSONResponse and rollback everything in case of failure?</p>