【发布时间】:2019-05-19 22:23:30
【问题描述】:
我想知道是否有人成功地限制了烧瓶管理员的 CRUD 功能。或者,如果这完全是正确的工具。
我想做的是以某种方式转换模型视图,以便用户只能编辑自己的内容。示例:数据库表“餐厅菜单”包含不同餐厅提供的菜肴。如果一家餐厅希望更改某些内容,他们应该能够更改和查看自己的内容,但不能查看其他餐厅的内容。理想情况下,使用 sqlalchemy 有一种简单的方法——我首先查询“用户”模型并获取与用户相关的餐厅,然后将其传递给 ModelView 类。
是否有一个简单的实现来做这样的事情,或者是否有其他的 CMS 系统可以更容易地处理这样的功能?
【问题讨论】:
-
我在我的应用程序中做了类似的事情,其中一部分覆盖了内置函数,如 def get_query(self) 和 def get_count_query(self),当然还有许多其他自定义代码。当您创建超过 1 个管理员实例时,甚至可以进行基于角色的分离。
-
非常感谢!快速尝试并覆盖了 get_query(self) 方法。我可以通过按 id 过滤来过滤视图的用户特定内容。您是否也知道如何预填充“编辑功能”,以便新条目自动与该用户关联?
-
是的,例如通过覆盖 form_args、form_choices、query_factory 等。只需查看 Flask-Admin 文档和源代码。这就是我所指的我的自定义代码。如果您有具体问题,请分享您的代码,我们可以帮助您针对您的用例进行定制。
标签: flask sqlalchemy flask-sqlalchemy crud flask-admin