Как транзакция управляется в командах администратора Django? - PullRequest
1 голос
/ 30 июля 2011

Мне просто интересно, как транзакция управляется в командах администратора django.Сделать на сохранение?Стремитесь к успеху?Я не могу найти соответствующую информацию в официальных документах.

Ответы [ 2 ]

2 голосов
/ 06 июля 2018

Операции команды управления не переносятся в транзакции, если вы не указали их.

Вы можете указать, чтобы handle () метод был упакован в транзакцию, установив output_transaction атрибут True.Из документов :

BaseCommand.output_transaction

Логическое значение, указывающее, выводит ли команда операторы SQL;если True, вывод будет автоматически обернут с BEGIN;и COMMIT ;.По умолчанию установлено значение False.

Для большего контроля вы всегда можете инициировать транзакции самостоятельно:

...
def handle(self, *args, **options):
    with transaction.atomic():
        do_your_stuff()
0 голосов
/ 30 июля 2011

Я не слишком уверен, но административные формы не достигают точки фиксации, если они не отвечают требованиям clean ().После этого, я думаю, все будет совершено.Такое поведение должно быть достаточно для стандартных форм в админке.Однако для более сложных форм вы можете создать свою пользовательскую форму администратора, и я уверен, что вы сможете определить, хотите ли вы выполнить фиксацию при успехе или при сохранении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...