Ok. What's important to me is that we have small transactions within the for loops of grades.progress_summary and grades.grade. The django docs (unfortunately down right now) suggest that a context_manager like `commit_on_success` delineates a transaction, and that any code outside of the context_manager commits as whatever the default is.

My question is: is it enough just to use context_managers to get those more granular commits, and let the default behavior manage the rest? Or do I have to explicitly the define the transaction behavior for the whole view?