Я использую Flask-Admin ModelView. Я хочу знать, какое поле в модели изменяется при вызове `after_model_change` - PullRequest
0 голосов
/ 27 октября 2019
class View(ModelView):    
    def after_model_change(self, form, model, is_created):
        if model.is_enabled:
            subject = "subject"
            template = render_template('template.html')

            mail.send_email(from_email='example@mail.com',
                          to_email=model.email, subject=subject, text=template)

1 Ответ

0 голосов
/ 31 октября 2019

Я нашел это решение. Метод edit_form создает экземпляр формы редактирования модели, и я беру нужное значение. После этого в методе after_model_change я проверяю, изменилось ли это значение, и решаю, отправлять ли электронное письмо.

class View(ModelView):    
    def after_model_change(self, form, model, is_created):
        if self.user_is_enabled != model.is_enabled:
            if model.is_enabled:
                subject = "subject"
                template = render_template('template.html')

                mail.send_email(from_email='example@mail.com',
                              to_email=model.email, subject=subject, text=template)

    def edit_form(self, obj=None):
        try:
            self.user_is_enabled = obj.is_enabled
        except AttributeError:
            pass

        return ModelView.edit_form(self, obj)
...