Должен ли декоратор commit_on_success использоваться только в представлениях в Django? - PullRequest
2 голосов
/ 09 января 2012

Я смотрю примеры для декоратора commit_on_success на сайте Django,

https://docs.djangoproject.com/en/dev/topics/db/transactions/

Предполагается / предпочтительнее ли использовать это в представлениях или оно может использоваться с любой функцией, выполняющей транзакции с БД?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2014

Смотрите, что commit_on_success устарел в Django 1.6. Вместо этого вы должны использовать декоратор @transaction.atomic.

2 голосов
/ 10 января 2012

Можно использовать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...