Перехватывается за исключением транзакции отката блока django. - PullRequest
0 голосов
/ 02 марта 2019

У меня есть такой блок кода:

with transaction.atomic():
    for i in some_objects:
        stop_object(i)
    for i in some_objects:
        try:
           activate_object(i)
        except IntegrityError as e:
           pass

Тест написан с py.test.По какой-то причине, когда я ловлю IntegrityError, все транзакции откатываются, и у меня точно такое же состояние, как и раньше.

Я был уверен, что транзакция должна откатываться только при ошибках, которые я не улавливаю.Я что-то упустил?

Не уверен также, как я могу отладить это.Если у вас есть идеи, поделитесь ими.

1 Ответ

0 голосов
/ 02 марта 2019

Оказалось, что необходимо добавить еще один блок транзакции.atomic ():

with transaction.atomic():
    for i in some_objects:
        stop_object(i)
    for i in some_objects:
        try:
           with transaction.atomic():
               activate_object(i)
        except IntegrityError as e:
           pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...