Почему не работают транзакции в джанго?

У меня есть две модели. Для простоты - модель `ModelA` и `ModelB`

class ModelA():
    pass


def create_model_a(params):
    # do_something
    obj = ModelA(params)
    obj.save()

class ModelB():
    def save(self):
        super(ModelB, self).save()
        create_model_a(params={"id":self.id})


Я хочу, что бы если функция `create_model_a` падала, то и объект модели B не создавался. Пытаюсь обернуть в транзакцию - но не работает.

Что я делал:
1) добавлял декоратор `@transaction.atomic` к функции `save`.
2) Пытался юзать как контекстный менеджер

Как тестил:
Написал функцию, которая один раз работает правильно, а на второй запуск рейзит ошибку `django.db.IntegrityError`
  • Вопрос задан
  • 169 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы