繁体   English   中英

从编辑视图自定义(覆盖)Flask-Admin的Submit方法

[英]Customize (override) Flask-Admin's Submit method from edit view

前提条件:
我是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方法,因为它是功能并添加了一些自定义代码。 就像我们假设我想在实际数据库提交后在日志文件中添加注释:

logging.warning('%s的工资:已更改为/%s',fullName,salary)

任何关于如何实现这一点的建议都将受到高度赞赏。 也许你可以指导我走的路,因为Flask-Admin文档到目前为止还没有给我足够的帮助。

我最终在我的Document派生类中覆盖了一个save方法。 所以现在我的Employee类包含这种代码:

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

今天我发现这个解决方案实际上并不新鲜,并在StackOverflow上进行了描述

但就我的具体情况而言,我认为乔斯的答案更好。 我更喜欢它,因为如果我覆盖on_model_change只有在通过管理员网页编辑数据库时才会调用我的自定义代码; 数据库上的每个编程操作(如saveupdate )都可以使用本机代码 - 这正是我想要的。 如果我重写save方法,我将自己处理每个保存操作,无论是由管理区域启动还是由服务器引擎以编程方式启动。

解决了,谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM