I
I
Igor2019-03-19 15:22:18
Django
Igor, 2019-03-19 15:22:18

How to bind saving a model to changing another model?

Good afternoon! There is an Item model . It is necessary that when an instance of the TakenItem model is created for the Item model, a certain number of things are subtracted from the number field (depends on TakenItem ). At first I wanted to implement this using save signals for models, but then I realized that if, for example, Item's number field is already 0, then its subtraction leads to a negative number, which is not correct.
Question: how to make it so that when creating TakenItem'a, if the number field of Item'a is non-zero, then the object is created, and number'athe value was reduced by the one passed in the creation of TakenItem .
Thank you.

Post Scriptum

P.S. Кто-нибудь может ответить, что решается это простым добавлением метода takeItem к модели Item, в котором всё и проверяется. Однако этот вариант не подходит, так как мне нужно, чтобы это работало ещё и в админке, при этом горожение огородов в самой админке (вызов takeItem'а вместо простого редактирования поля) кажется для меня костылём. Я бы хотел, чтобы это реализовывалось на уровне самой модели, прозрачно для внешнего взаимодействия.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
T
tema_sun, 2019-03-19
@tema_sun

You can, for example, override the save() method of TakenItem, or throw an exception in the pre_save signal.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question