Flask-Admin 找不到反向关系

cho*_*433 5 sqlalchemy flask flask-sqlalchemy flask-admin

我已经有一个使用我的 SQLAlchemy 模型的应用程序,我现在正在尝试在顶部添加一个 Flask 管理网站来管理数据库中的一些数据。这个模型已经在整个现有应用程序中设置和工作,所以我知道关系配置正确。在我的数据库中,data_package 表对供应商表有一个 FK,这已作为关系添加。但是,当我创建一个烧瓶模型视图以允许编辑 data_package 时,我收到了错误:

例外:找不到模型的反向关系

我添加了下面代码的一个子集,还有更多的列和逻辑,但这是我必须尝试和测试问题修复程序的最低限度。问题发生是因为我添加了inline_models = (Supplier, )这是我需要的,因为我想选择允许更改数据包的供应商。

抛出异常的代码行是https://github.com/flask-admin/flask-admin/blob/master/flask_admin/contrib/sqla/form.py#L558。这样做的原因是关系方向被定义为 ONETOMANY,并且有一个检查以确保方向是 MANYTOONE 或 MANYTOMANY

Base = declarative_base()


class Supplier(Base):
    __tablename__ = 'supplier'
    id = Column(Integer, primary_key=True)
    name = Column(String(100), nullable=False)

class DataPackage(Base):
    __tablename__ = 'data_package'
    id = Column(Integer, primary_key=True)
    name = Column(String(100), nullable=False)

    supplier_id = Column(Integer, ForeignKey('supplier.id'), index=True, nullable=False)
    supplier = relationship("Supplier", backref='packages')

class DataPackageAdminView(ModelViewOnly):
    form_columns = ['name', 'supplier']
    inline_models = (Supplier,)

def create_app():
    settings.configure_orm()

    app = Flask(__name__)
    app.config.from_pyfile('config.py')

    @app.route('/')
    def index():
        return '<a href="/admin/">Click me to get to Admin!</a>'

    admin = Admin(app, name='Test Editor', template_mode='bootstrap3')
    admin.add_view(DataPackageAdminView(DataPackage, settings.Session, category='Data Sources'))

    return app

if __name__ == '__main__':
    app = create_app()
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)