Я не могу найти конкретные примеры для проверки отношений.
У меня есть 2 модели (представьте себе Twitter, пользователи могут подписываться друг на друга):
class User(Base):
"""Table schema containing profiles."""
__tablename__ = "users"
id = Column(UUID(as_uuid=True), primary_key=True)
following = relationship('User',
secondary='followers',
primaryjoin='User.id==Follower.user_id',
secondaryjoin='Follower.user_id==User.id'
)
class Follower(Base):
__tablename__ = 'followers'
user_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), primary_key=True)
follows_user_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), primary_key=True)
Чтобы проверить это, я создаю пользователя и несколько отношений. Я хотел бы найти следующие отношения: 1. Учитывая пользователя, найти всех его последователей. 2. По заданному пользователю найдите всех пользователей, за которыми он следует.
Следовательно, я попытался:
u1 = User(id=uuid4())
u2 = User(id=uuid4())
f1 = Follower(user_id=u1, follows_user_id=u2)
f2 = Follower(user_id=u1, follows_user_id=u1)
print(u1.following)
>>> []
Однако это пустой список. Почему? Я ожидал увидеть [u1, u2]
.
Я дополнительно попробовал:
u1 = User(id=uuid4())
u2 = User(id=uuid4())
f1 = Follower()
f1.user_id = u1
f1.follows_user_id = u2
session.add(u1)
session.add(u2)
session.add(f1)
session.commit()
session.query(u1.following)