17
私は2つのテーブル、News
とFiles
持っている:file_id_logo
FKEYを追加した後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'))
を、SQLAlchemyのはCircularDependencyErrorを上げました。 の関係で既にpost_update=True
を試しましたが、何も変更されませんでした。
これを解決する適切な方法は何ですか?
次の場合
は(場合には、それが重要)が可能です:- ファイルがないか、正確に一つのニュースが割り当てられていません。
- ファイルにニュースがない場合は、ロゴとして参照されているこのファイルのニュースもありません。
- 1つのニュースに対して複数のファイルが存在することがありますが、これらのファイルのうち1つのみが
logo
になることがあります。 - ニュースに
logo
がある場合、参照されるファイルにもこのニュースがnews
として表示されます。
エラーを取り除くためにうまく働いたが、それはいくつかの他の関係を壊しました。だから私は単にForeignKeyを取り除くことにしました。答え自体が正しいので、とにかくそれを受け入れる。 – ThiefMaster
@ThiefMasterおそらく、あなたの関係にprimaryjoinを設定する必要があります.2つのテーブルの間に複数のリレーション/バックリファレンスがある場合、結合方向を判断できません。 – letitbee
ここに情報があります:http://docs.sqlalchemy.org/en/rel_0_8/core/constraints.html –