обрабатывает приходящие данные (из админки или из view), производит валидацию.
В ходе валидации используются связанные модели (есть специифческая логика, согласно которой одни связанные поля не могут быть одновременно с другмим, например). Поэтому перед валидацией я сохраняю основную модель. Это сохранение обернуто в transaction.atomic(), вся функция — тоже atimoic.
Вылезает IntegrityErrorFOREIGN KEY constraint failed. Я предполагаю, что это связано с тем, что вся большая — atomic, поэтому основная модель не коммитится в базе данных и обратится к свзяанным полям невозможно, но мб и не так. Кто-то может помочь? Вот, чего я хочу достичь: есть большая функция, в ходе которой я хочу обращаться к related models, при этом, если какая-то ошибка во время выполнения этой функции, все измнения в базе данных откатить и вернуть в админку или во view сообщение об ошибке валидации.
Ну для начала, попробуй чекнуть, как откатить транзакцию, на сколько я помню в Джанго есть какая-то настройка при неудачном коммите, ролбэчить изменения, но это лучше в доке чекнуть
Да, но это одна транзакция
валидация производится до записи в бд. На основе сырых данных нельзя провалидировать?
Обсуждают сегодня