Flask-Admin:如何在validate_form中获取正在编辑的对象
在Flask-Admin的validate_form中获取编辑对象
在Flask-Admin的ModelView中,编辑操作时当前正在修改的对象会被存储在self._edit_obj属性中,你可以直接在validate_form方法内访问它。
需要注意:
- 处于编辑模式时,
self._edit_obj是当前要修改的模型实例 - 处于新增模式时,
self._edit_obj为None,使用前建议先做判断
修改你的代码如下:
class ShiftModelView(ModelView): """ModelView to manage Shift model.""" def validate_form(self, form) -> bool: """Validate form.""" if not super().validate_form(form): return False if form.scheduled_from.data >= form.scheduled_to.data: message = ( "'Scheduled From' cannot be greater than or equal to 'Scheduled To'" ) flash(message, "error") return False # 获取正在编辑的对象 edited_obj = self._edit_obj if edited_obj is not None: # 这里添加基于编辑对象的自定义验证逻辑 # 示例:检查编辑后的时间是否早于原对象的创建时间 if form.scheduled_from.data < edited_obj.created_at: flash("Scheduled From cannot be earlier than shift creation time", "error") return False return True
self._edit_obj是Flask-Admin内部用于暂存编辑实例的属性,在编辑页面加载完成后会自动赋值,无需额外配置。
内容的提问来源于stack exchange,提问作者lmiguelvargasf
相关产品推荐
相关产品推荐

