使用蓝图时,烧瓶Sqlalchemy循环导入

时间:2018-12-04 13:21:34

标签: python flask sqlalchemy flask-sqlalchemy

我有一个flask应用程序,它的包装使用蓝图彼此分开。 我有3个包,它们之间有多对一的关系。

第一个程序包(蓝图)是身份验证(包含User_Model):

from Billboard.Apps.models import Android_Model
from Billboard.Survey.models import Survey_Model

class User_Model (db.Model, UserMixin):
    __tablename__ = user_model
    ...
    advertised_apps = db.relationship ('Android_Model' , backref = 'user_model' , lazy = True)
    advertised_surveys = db.relationship ('Survey_Model' , backref = 'user_model' , lazy = True)

第二个程序包具有我的User_Model的外键:

from Billboard.Authentication.models import User_Model

class Survey_Model (db.Model):
    __tablename__ = 'survey_model'
    ...
    advertiser_id = db.Column(db.Integer, db.ForeignKey('user_model.id'), nullable=False)

第三个程序包的模型与第二个程序包的模型相同。

当我运行烧瓶应用程序时,出现一些导入错误,我知道它们是这些模型之间的循环导入。

注意:当我删除这些模型之间的这种关系时,我没有出现任何错误,并且项目正常运行。

有什么想法要解决吗?

1 个答案:

答案 0 :(得分:1)

您实际上不需要导入模型来声明与它的关系。注意db.relationship将字符串作为第一个参数,而不是类。