Where is the autocommit that this is over?  Yes, autocommit is the default in Django, but these are all going through transaction middleware that changes the default behavior.  So if you want autocommit, you need to use that decorator instead.  But if you want commit_on_success, you need to specify that.  And given Dave's experience that autocommit wasn't doing what he expected, you should also test this (somehow).