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

У меня есть две модели. Для простоты - модель `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`
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект