@Igorello74

Как сделать привязку сохранения модели к изменению другой модели?

Добрый день! Есть модель Item. Нужно, чтобы когда создаётся экземпляр модели TakenItem у модели Item из поля number вычиталось какое-либо количество вещей (зависит от TakenItem'а). Сначала хотел реализовать это при помощи сигналов сохранения для моделей, однако потом понял, что если, к примеру, у Item'а поле number уже 0, то его вычитание ведёт к отрицательному числу, что не правильно.
Вопрос: как сделать так, чтобы при создании TakenItem'а если поле number у Item'а ненулевое, то объект создавался, а у number'а уменьшалось значение на переданное в создании TakenItem'а.
Спасибо.

Post Scriptum

P.S. Кто-нибудь может ответить, что решается это простым добавлением метода takeItem к модели Item, в котором всё и проверяется. Однако этот вариант не подходит, так как мне нужно, чтобы это работало ещё и в админке, при этом горожение огородов в самой админке (вызов takeItem'а вместо простого редактирования поля) кажется для меня костылём. Я бы хотел, чтобы это реализовывалось на уровне самой модели, прозрачно для внешнего взаимодействия.
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 1
tema_sun
@tema_sun
Можно, например, оверрайднуть метод save() у TakenItem, или выкинуть эксепшн в pre_save сигнале.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы