Flask-Admin无法找到反向关系

时间:2017-05-16 13:21:00

标签: flask sqlalchemy flask-sqlalchemy flask-admin

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

  

异常:无法找到模型的反向关系

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

抛出异常的代码行是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)

0 个答案:

没有答案