Можно использовать commit_on_success
для функций, которые не являются представлениями.В моей компании мы используем его во многих служебных скриптах.
Просто убедитесь, что вы не «вкладываете» функции, используя декораторы транзакций, как в примере ниже, иначе вы можете получить поведение, которого вы не ожидали.
# avoid doing the following!
@transaction.commit_on_success
def my_func()
do_stuff()
@transaction.commit_on_success
def my_view()
my_func()