【发布时间】:2016-02-11 15:31:23
【问题描述】:
我声明了需要在两个模型的模块中使用数据库关系的模型,这会导致 “无法导入名称 Region” 错误。
为了更好地说明这一点,这是我的示例模型
项目/位置/models.py
from project.location.models import Region
class Project(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(175), unique=True, nullable=False)
region = db.Column(db.Integer, db.ForeignKey('regions.id'))
regions = db.relationship(Region, backref='projects')
从下一个模块开始,
项目/可交付成果/模型
from project.deliverables.models import Project
class Region(db.Model):
name = db.Column(db.String(30))
id = db.Column(db.Integer, primary_key=True)
projects = db.relationship("Project", backref='regions')
我怎样才能最好地避免循环导入,以便将来的模型声明不会被这种现象纠缠?
【问题讨论】:
-
那么,一个项目在一个区域中?我不明白为什么一个区域会引用一个项目。
-
他们都在相关模型 Project.region.name 和 Region.project.names 上使用 db.relationship。包含它们所属区域的内容。并从特定地区选择项目。
-
您已经切换了导入语句。
from project.location.models import Region应该是from project.deliverables.models import Region,对吧?另一个也一样 -
除此之外-也许可以看到这篇文章-stackoverflow.com/questions/15547156/…
-
@cricket_007 的链接就是答案,但为了明确起见,用字符串定义关系,这样您就不需要导入任何东西
db.relationship('Region', backref='projects')。
标签: python flask sqlalchemy flask-sqlalchemy flask-wtforms