Настроить (переопределить) Flask-Admin Отправить метод из вида редактирования - программирование
Подтвердить что ты не робот

Настроить (переопределить) Flask-Admin Отправить метод из вида редактирования

Предпосылки:
Я новичок в Python и Flask-Admin, в частности. Я создал простую тестовую службу, которая имеет MondoDB, сохраняя данные с отношением "один к одному".

employeeName → зарплата

Модель выглядит следующим образом:

class Employee(db.Document):
    fullName = db.StringField(max_length=160, unique=True)
    salary = db.IntField()

И я использую Flask-Admin для наблюдения за таблицей с данными и ее редактирования. Когда я хочу изменить поле "зарплата", я просто нажимаю кнопку "Изменить" и в режиме редактирования по умолчанию для Flask-Admin меняю целочисленное значение. Я нажимаю "Отправить", и новое значение в базе данных успешно применяется.

Вопрос:
Но мне нужно переопределить метод Submit, который уходит, поскольку это функциональность, и добавляет некоторый код. Например, допустим, что я хочу добавить комментарий в файл журнала после фактического db submit:

logging.warning( "Зарплата% s: была изменена на /% s", fullName, зарплата)

Любое предложение о том, как достичь этого, будет высоко оценено. Возможно, вы можете направить меня на путь, поскольку документация Flask-Admin до сих пор не дает мне достаточной помощи.

4b9b3361

Ответ 2

Я закончил переопределять метод save в моем производном от документа классе. Итак, теперь мой класс Employee содержит такой код:

def save(self, *args, **kwargs):
    print 'whatever I want to do myself is here'
    return super(Employee, self).save(*args, **kwargs)

Сегодня я обнаружил, что это решение на самом деле ничего нового и fooobar.com/info/234978/....

Но для моего конкретного случая я думаю, что ответ Джоса лучше. Мне нравится больше, потому что, если я переопределяю on_model_change, я вызываю свой собственный код только в том случае, если я редактирую базу данных через веб-страницу администратора; и каждая программная операция над базой данных (например, save, update) будет работать с использованием собственного кода - именно этого я и хочу. Если я переопределяю метод save, я буду обрабатывать каждую операцию сохранения самостоятельно, независимо от того, был ли он инициирован административной областью или программным путем с помощью механизма сервера.

Решила, спасибо!