【发布时间】:2019-01-25 09:53:28
【问题描述】:
我使用 Flask 制作了一个学费支付应用程序,并使用 Flask-admin 作为每个注册了我的应用程序的学校的数据库管理。
我已经做到了,但现在我真的不知道如何在每个注册管理自己的学费支付的学校帐户之间分离数据访问。
使用 Flask-login,我可以使用以下代码:
@app.route('/school_admin')
@login_required
def school_admin():
school_data = db.session.query(Student.id, Student.name).filter_by(school_id=current_user.id).all()
return render_template('school_admin_dashboard.html', school_data=school_data)
但是,因为 Flask-admin 会自动生成它的表格视图,我真的不知道该怎么做..?
到目前为止,我的 ModelView 是这样的:
class SchoolAdminModelView(sqla.ModelView):
def is_accessible(self):
if not current_user.is_active or not current_user.is_authenticated:
return False
if current_user.has_role('schooladmin'):
return True
return False
def _handle_view(self, name, **kwargs):
if not self.is_accessible():
if current_user.is_authenticated:
# permission denied
abort(403)
else:
# login
return redirect(url_for('security.login', next=request.url))
class StudentModelView(SchoolAdminModelView):
pass
admin.add_view(StudentModelView(Student, db.session))
那么,如何通过school_id..来分离视图模型?
注意:我为什么使用 Flask-admin 而不是 Flask-login 来管理学校管理员,因为它非常易于管理用户和超级用户角色。 我已经使用 Flask-login 作为使用此应用程序的用户的学生的家长。
【问题讨论】:
标签: python flask flask-sqlalchemy flask-login flask-admin