Я использую команду Django для выполнения некоторых задач, связанных с базой данных манипуляций:Django: Как откат (@ transaction.atomic) без повышения исключения?
class SomeCommand(BaseCommand):
@transaction.atomic
def handle(self, *args, **options):
# Some stuff on the database
Если исключение во время выполнения моей программы, @transaction.atomic
гарантирует откатить. Могу ли я заставить это поведение исключать исключение? Что-то вроде:
# Doing some stuff, changing objects
if some_condition:
# ABANDON ALL CHANGES AND RETURN
Я подозреваю, что нет никакого способа сделать это. Вам нужно будет сделать это с помощью исключения и поймать его тихо. Я создал подкласс temp-exception, поймал его и передал, все внутри «атомного» блока. – reformy