Luc*_*uda 5 python flask-admin
我一直在 Google 和 StackOverflow 上搜索这方面的内容。基本上,我想尝试覆盖 Flask-Admin 上的删除函数,以不实际删除记录,而是更新名为“deleted_by”和“deleted_on”的对象行。
我在 StackOverflow 上发现了一些问题,解释了如何使用 on_model_change 更改保存按钮上的逻辑,但没有人具体说明删除模型逻辑。我在文档中也没有找到任何与此相关的信息。谁能告诉我应该如何处理这个问题?
提前致谢!
重写delete_model您认为的方法。如果您使用 Sqlalchemy 视图,这是默认行为self.session.delete(model),请注意块中的调用try ... except。
def delete_model(self, model):
"""
Delete model.
:param model:
Model to delete
"""
try:
self.on_model_delete(model)
self.session.flush()
self.session.delete(model)
self.session.commit()
except Exception as ex:
if not self.handle_view_exception(ex):
flash(gettext('Failed to delete record. %(error)s', error=str(ex)), 'error')
log.exception('Failed to delete record.')
self.session.rollback()
return False
else:
self.after_model_delete(model)
return True
Run Code Online (Sandbox Code Playgroud)
在您看来,您需要类似以下内容:
class MyModelView(ModelView):
def delete_model(self, model):
"""
Delete model.
:param model:
Model to delete
"""
try:
self.on_model_delete(model)
# Add your custom logic here and don't forget to commit any changes e.g.
# self.session.commit()
except Exception as ex:
if not self.handle_view_exception(ex):
flash(gettext('Failed to delete record. %(error)s', error=str(ex)), 'error')
log.exception('Failed to delete record.')
self.session.rollback()
return False
else:
self.after_model_delete(model)
return True
Run Code Online (Sandbox Code Playgroud)
另外,您可能不想打扰 和self.on_model_delete(model)调用self.after_model_delete(model),因为默认情况下它们不执行任何操作。
| 归档时间: |
|
| 查看次数: |
2413 次 |
| 最近记录: |