Я настраиваю Sqlalchemy mapper для базы данных sqlite. Мой класс User имеет ненулевые отношения с моим классом Team. У меня уже есть следующий код:
class Team(Base):
__tablename__ = 'teams'
team_id = Column(Integer, primary_key=True)
# Using Integer as holder for boolean
is_local = Column(Integer, default=0)
class User(Base):
__tablename__ = 'users'
user_id = Column(Integer, primary_key=True)
team_id = Column(Integer, ForeignKey(Team.team_id), default=1, nullable=False)
team = relationship('Team')
is_local = Column(Integer, default=0)
Я хотел бы установить, что значение User.is_local
по умолчанию является значением Team.is_local
для связанной команды пользователя.
Однако , после создания пользователя, я все еще хотел бы иметь возможность изменять значение is_local
пользователя без изменения значений команды или любого другого пользователя в команде.
Так что, если бы я должен был выполнить
faraway = Team(is_local=1)
session.add(faraway)
session.commit()
u = User(team=faraway)
session.add(u)
session.commit()
print(bool(u.is_local))
Результат должен быть True
До сих пор я пробовал контекстные функции по умолчанию, предложенные https://stackoverflow.com/a/36579924,, но я не смог найти синтаксис, позволяющий мне ссылаться на Team.is_local
Есть ли простой способ сделать это?