I have a model representing a user, and I want to create relationships between users representing that they are friends. My functional model with an association table and methods for listing all friends looks like this:
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
The problem is that I need to implement a status request and a status that is awaiting confirmation (as you know from Facebook), so I need to add an additional column to the frienship table. According to the SQLAlchemy tutorial, I have to create an association object, but how do I make it a link again?
Or can you just add this column to my current frienship table and access and change the status value there?
thanks
source share