У меня есть модель пользователя и куча отношений на нем. Я хочу нацелить определенные столбцы c в разных моделях и изменить столбец на пользователя. Например, если экземпляр пользователя будет иметь отношение с user_experiences
, я хочу сказать, если конкретный c столбец на user_experiences
изменится, тогда я хочу user.needs_review = True
.
, о котором я думал делал это со слушателями событий, но беспокоился о том, будет ли это масштабируемым. Например, вы изменили user_experiences
, а затем под капотом, который запускает запрос для получения пользователя и изменяет логическое значение там. Также не уверен, целесообразно ли иметь всех этих слушателей событий на других моделях. Есть предложения?
Пример модели. Если какой-либо экземпляр пользователя experiences
изменит значение, я хочу изменить User.needs_review
на True
, а если экземпляр пользователя career
изменится, я хочу user.needs_review = True
.
class User(Base):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
needs_review = db.Column(db.Boolean)
career_id = db.Column(db.Integer, db.ForeignKey('user.id'), index=True)
class UserExperience(Base):
__tablename__ = 'user_experiences'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, primary_key=True)
value = db.Column(db.Integer)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), index=True)
class UserCareer(Base):
__tablename__ = 'user_careers'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, primary_key=True)
value = db.Column(db.Integer)