У меня есть эти классы, но я не могу создать отношения image_history
и island_history
:
class HistoryModel(db.Model):
__tablename__ = "history"
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.TIMESTAMP, default=datetime.utcnow)
text = db.Column(db.Text)
class ImageHistoryModel(db.Model):
__tablename__ = "image_history"
image_id = db.Column(db.Integer, db.ForeignKey("image.id", ondelete="CASCADE"), nullable=False, primary_key=True)
history_id = db.Column(db.Integer, db.ForeignKey("history.id", ondelete="CASCADE"), nullable=False, primary_key=True)
customer_id = db.Column(db.Integer, db.ForeignKey("customer.id"), nullable=False, primary_key=True)
customer = db.relationship("CustomerModel", lazy=True, uselist=False)
images = db.relationship("ImageModel", backref=backref("image_histories", passive_deletes=True), lazy=True)
histories = db.relationship(
"HistoryModel", backref=backref("image_histories", passive_deletes=True), lazy=True, uselist=False
)
class IslandHistoryModel(db.Model):
__tablename__ = "island_history"
island_id = db.Column(db.Integer, db.ForeignKey("island.id"), nullable=False, primary_key=True)
history_id = db.Column(db.Integer, db.ForeignKey("history.id", ondelete="CASCADE"), nullable=False, primary_key=True)
customer_id = db.Column(db.Integer, db.ForeignKey("customer.id"), nullable=False, primary_key=True)
customer = db.relationship("CustomerModel", lazy=True, uselist=False)
islands = db.relationship("IslandModel", backref="island_histories", lazy=True)
histories = db.relationship(
"HistoryModel", backref=backref("island_histories", passive_deletes=True), lazy=True, uselist=False
)
, но при попытке запустить миграцию у меня появляется ошибка:
sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class ImageHistoryModel->image_history, expression 'HistoryModel' failed to locate a name ("name 'HistoryModel' is not defined"). If this is a class name, consider adding this relationship() to the <class 'app.models.image.ImageHistoryModel'> class after both dependent classes have been defined.
HistoryModel
уже существует в БД, и все классы находятся в разных файлах.