17
我有两个表,News
和Files
:SQLAlchemy循环依赖 - 如何解决它?
# unrelated columns removed
class News(db.Model):
id = db.Column(db.Integer, primary_key=True)
file_id_logo = db.Column(db.Integer, db.ForeignKey('files.id'))
logo = db.relationship('File', lazy=False)
class File(db.Model):
id = db.Column(db.Integer, primary_key=True)
news_id = db.Column(db.Integer, db.ForeignKey('news.id'))
news = db.relationship('News', lazy=False, backref=db.backref('files'))
添加file_id_logo
FKEY后,SQLAlchemy中提出了CircularDependencyError。 我已经在logo
关系中试过post_update=True
,但它没有改变任何东西。
解决此问题的正确方法是什么?
的有以下几种情况(如果它事项):
- 文件没有或只有一个新闻分配。
- 如果一个文件没有新闻,那么这个文件也没有引用其标志的新闻。
- 单个新闻可以有多个文件,但只有其中一个文件可以是其
logo
。 - 所以如果新闻有
logo
,引用文件也有这个消息作为其news
。
工作很好,摆脱了错误,但它打破了一些其他关系。所以我决定简单地摆脱ForeignKey。无论如何都接受它,因为答案本身是正确的。 – ThiefMaster 2011-04-30 19:32:00
@ThiefMaster您可能只需要在关系上设置primaryjoin - 当两个表之间存在多个关系/回退时,它们无法确定连接方向。 – letitbee 2011-05-07 09:37:06
我在这里找到了信息:http://docs.sqlalchemy.org/en/rel_0_8/core/constraints.html – 2015-10-10 20:07:22