【发布时间】:2014-07-06 03:47:17
【问题描述】:
我正在使用 sqlalchemy 并且有两个模型,文章和标签,这是一个多对多的关系。
当我使用 Flask-Admin 添加文章时,我只想要部分可用标签(与用户权限相关)而不是所有标签。
有什么想法吗?谢谢
【问题讨论】:
标签: flask flask-sqlalchemy flask-admin
我正在使用 sqlalchemy 并且有两个模型,文章和标签,这是一个多对多的关系。
当我使用 Flask-Admin 添加文章时,我只想要部分可用标签(与用户权限相关)而不是所有标签。
有什么想法吗?谢谢
【问题讨论】:
标签: flask flask-sqlalchemy flask-admin
可能最好的方法是使用dynamic relationship loaders。只需在关系定义中使用lazy='dynamic':
posts = relationship(Post, lazy="dynamic")
这会返回一个查询对象而不是对象集合,因此您可以直接查询它:
posts = jack.posts.filter(Post.headline=='this is a post')
您也可以使用鉴别器列或其他东西来实现您想要的,但这可能是矫枉过正。
【讨论】:
听起来你需要ModelView.get_query:
class MyView(ModelView):
def get_query(self,*args,**kwargs):
return super(MyView,self).get_query(*args,**kwargs).filter_by(current_user.can_view=True)
【讨论】: