Подтвердить что ты не робот

SQLAlchemy круговая зависимость - как ее решить?

У меня есть две таблицы, News и Files:

# 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. Я уже пробовал post_update=True в отношении logo, но ничего не изменил.

Какой правильный способ решить эту проблему?

Возможны следующие случаи (в случае, если это имеет значение):

  • Файл не имеет или точно назначен для новостей.
  • Если в файле нет новостей, также нет новостей с этим файлом, на которые он ссылается как логотип.
  • Может быть несколько файлов для одной новости, но только один из этих файлов может быть logo.
  • Итак, если в News есть logo, ссылка на файл также имеет эту новость как News.
4b9b3361