我正在使用 sqlalchemy 并且有两个模型,文章和标签,这是一个多对多的关系。
当我使用 Flask-Admin 添加文章时,我只想要部分可用的标签(与用户权限相关)而不是所有标签。
任何想法?谢谢
我正在使用 sqlalchemy 并且有两个模型,文章和标签,这是一个多对多的关系。
当我使用 Flask-Admin 添加文章时,我只想要部分可用的标签(与用户权限相关)而不是所有标签。
任何想法?谢谢
可能最好的方法是使用动态关系加载器。只需在您的关系定义中使用 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)