我尝试使用Flask-Admin来可视化我的数据库表。 但是,用户可以随时创建和删除表,因此我需要实现以下目标之一:
每次用户刷新页面时实例化的模型视图(基于索引其他表的表)。 这对我来说不起作用,错误表明在初始化应用程序后无法添加ModelViews。
ModelView,用户可以从下拉列表中选择数据库表(基于索引其他表的表),这会更改ModelView的基础Model对象。 但是,我不知道该怎么做。
最好的方法是什么/如何实现其中之一?
答案 0 :(得分:-1)
我认为您的第二个选项可能有可能实施。例如,在Flask-Admin中,您可以创建
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
class MyView(BaseView):
@expose('/')
def index(self):
return self.render('index.html')
app = Flask(__name__)
admin = Admin(app)
admin.add_view(MyView(name='Hello 1', endpoint='test1', category='Test'))
admin.add_view(MyView(name='Hello 2', endpoint='test2', category='Test'))
admin.add_view(MyView(name='Hello 3', endpoint='test3', category='Test'))
app.run()
为您提供包含多个视图的下拉菜单。您可以将MyView
实例化为ModelView
并动态迭代表。即
from flask import Flask
from flask.ext.admin import Admin, BaseView, expose
class MyView(ModelView):
# Disable model creation
can_create = False
# Override displayed fields
column_list = ('field1', 'field2')
def __init__(self, session, **kwargs):
# If tables model is the same, otherwise, you need
# to generate ``TableModel`` dynamically
super(MyView, self).__init__(TableModel, session, **kwargs)
app = Flask(__name__)
admin = Admin(app)
for index, name, endpoint in get_dynamic_table_datalist():
admin.add_view(MyView(session=db.session, name=name,
endpoint=endpoint, category='Tables'))
app.run()
希望这会有所帮助。干杯..