UpdateView
сохраняет объект в методе form_valid()
. Посмотрите на этот бесценный сайт , когда вы используете представления на основе классов Django.
Поэтому вы должны переопределить метод form_valid()
, а не метод post()
:
def form_valid(self, form):
emp = form.save(commit=False)
emp.amt_absent = emp.day_absent * emp.amt_rate
emp.save()
self.object = amp
return super().form_valid(form)
Обратите внимание, что сохранение поля в Employee
, которое можно легко рассчитать из двух других полей, не рекомендуется, так как это может привести к несогласованности / повреждению данных. Поскольку amt_absent
- это просто умножение двух других полей, зачем вам его сохранять?
В качестве альтернативы, если смотреть на то, что ты на самом деле делаешь, это не кажется ответственностью видения. Если это должно происходить каждый раз при сохранении Employee
, вы можете сделать это на самой модели:
class Employee(Model):
... # fields go here
def save(self, **kwargs):
self.amt_absent = self._get_amt_absent()
super().save(**kwargs)
# update other models here as well
В этой ситуации вам не нужно ничего переопределять на UpdateView
.