【问题标题】:How to avoid edition of a denied/filtered record on Flask-Admin如何避免在 Flask-Admin 上编辑被拒绝/过滤的记录
【发布时间】:2019-12-30 21:21:37
【问题描述】:
我正在过滤记录,方法是使用 get_query 为每个用户分隔记录。
def get_query(self):
return self.session.query(self.model).filter(self.model.userid == current_user.id)
但是当用户直接在url中键入过滤记录的id时,并不能解决问题。我怎样才能避免这种情况?提前致谢。
【问题讨论】:
标签:
flask
flask-login
flask-admin
【解决方案1】:
您需要覆盖视图的get_one 方法。请参阅get_query 和 get_one 的文档中的注释。
示例,假设使用 SQLAlchemy:
def TestView(ModelView):
def get_query(self):
return self.session.query(self.model).filter(self.model.userid == current_user.id)
def get_count_query(self):
self.session.query(func.count('*')).select_from(self.model).filter(self.model.userid == current_user.id)
def get_one(self, id):
query = self.get_query()
return query.filter(self.model.id == id).one()