更改“创建”按钮flask-admin的链接位置

时间:2018-05-12 15:44:41

标签: python python-3.x flask flask-admin

我有这个烧瓶管理界面,但我想改变Create链接的行为,所以我可以链接到我自己的创建界面,而不是让烧瓶管理员为我创建一个创建表单。还有一点是在With Selected旁边添加另一个链接,该链接会重定向到另一个页面。这是复杂的几何数据,所以我需要一个完全不同的数据创建界面,Products只是一个例子。

enter image description here

我真的不想添加另一个管理模板,所以如果可以在python中完成它会很好。

经过一段时间的尝试后,我设法找到了这个解决方案,这正是我想要的:

from flask_admin import Admin
from flask_sqlalchemy import SQLAlchemy
from flask_admin.contrib.sqla import ModelView
from flask import Flask, url_for, redirect

app = Flask(__name__)
db = SQLAlchemy(app)
admin = Admin(app)

class Product(db.Model):
    __tablename__ = 'product'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)

db.create_all()

class SuperHackyFlaskAdminRedirectFakeException(Exception):
    pass

@app.errorhandler(SuperHackyFlaskAdminRedirectFakeException)
def handle_fake_errors(error):
    return redirect(url_for('index'))

@app.route('/index')
def index():
    return 'this is the index'

class ProductView(ModelView):
    column_display_pk = True

    def redirect_to_index_from_admin(_):
        raise SuperHackyFlaskAdminRedirectFakeException()

    create_form = redirect_to_index_from_admin

admin.add_view(ProductView(Product, db.session))

正如您可能看到的那样,它确实很酷,我宁愿找到更好的解决方案。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

覆盖create_view的{​​{1}}方法。

ProductView