如何避免在 Flask-Admin 上编辑 denied/filtered 记录

How to avoid edition of a denied/filtered record on Flask-Admin

我正在通过使用 get_query 为每个用户分隔记录来过滤记录。

def get_query(self):
    return self.session.query(self.model).filter(self.model.userid == current_user.id)

但是,当用户直接在url中输入过滤记录的id时,并不能解决问题。我怎样才能避免这种情况?提前致谢。

您需要覆盖视图的 get_one 方法。请参阅 get_query and 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()