У меня есть модель, представляющая пользователя, и я хочу создать отношения между пользователями, представляющими их друзей. Моя функциональная модель со столом и методами объединения перечислить все друзья выглядят такSQLAlchemy - самореляционное отношение Many-to-many с дополнительным столбцом
friendship = db.Table('friend',
db.Column('id', db.Integer, primary_key=True),
db.Column('fk_user_from', db.Integer, db.ForeignKey('user.id'), nullable=False),
db.Column('fk_user_to', db.Integer, db.ForeignKey('user.id'), nullable=False)
)
class User(db.Model):
...
...
friends = db.relationship('User',
secondary=friendship,
primaryjoin=(friendship.c.fk_user_from==id),
secondaryjoin=(friendship.c.fk_user_to==id),
backref = db.backref('friend', lazy = 'dynamic'),
lazy = 'dynamic')
def list_friends(self):
friendship_union = db.select([
friendship.c.fk_user_from,
friendship.c.fk_user_to
]).union(
db.select([
friendship.c.fk_user_to,
friendship.c.fk_user_from]
)
).alias()
User.all_friends = db.relationship('User',
secondary=friendship_union,
primaryjoin=User.id==friendship_union.c.fk_user_from,
secondaryjoin=User.id==friendship_union.c.fk_user_to,
viewonly=True)
return self.all_friends
Проблема заключается в том, что мне нужно реализовать просить frienship и ожидающий до подтверждения (так же, как вы знаете, это от Facebook), так что необходимо добавить дополнительный столбец в таблицу frienship. В соответствии с SQLAlchemy tutorial я должен создать объект ассоциации, но как сделать его снова ссылкой?
Или можно просто добавить этот столбец в текущую таблицу frienship и получить доступ и изменить значение статуса там?
Благодаря
Я решил это так же, как уже, но спасибо за ваш ответ :) принимающему – skornos