Откат транзакции Django после execute_create - PullRequest
0 голосов
/ 27 января 2019

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

class SnapshotView(BaseViewSet):
    serializer_class = SnapshotSerializer

    @transaction.atomic
    def perform_create(self, serializer):
        # this will call serializer.save()
        snapshot = snapshot = super().perform_create(serializer)
        # this will run some code can raise an exception
        SnapshotServices.create_snapshot(snapshot=snapshot,
                                         data=serializer.initial_data)

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

второй метод выбрасывает пользовательское исключение, которое я читаю, и кажется, что я все делаю правильно.

1 Ответ

0 голосов
/ 06 февраля 2019

Я понял это.моя проблема заключалась в том, что django использует базу данных по умолчанию при использовании в atomic is None.Поскольку я использую другую БД, я просто добавил с помощью моего декоратора транзакции.atomic (с использованием = MYDB), и это решило мою проблему.

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