I managed to figure this one out my self :)
 

association_table = db.Table('association',
    db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('friend_id', db.Integer, db.ForeignKey('user.id'))
)
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True)
    password = db.Column(db.String(30))
    email = db.Column(db.String(45), unique=True)
    friends = db.relationship("User",
                secondary=association_table,
                backref='added_by',
                primaryjoin=id == association_table.c.user_id,
                secondaryjoin=id == association_table.c.friend_id)

With this I can now do following:
>>> user1 = User.query.filter_by(id=1).first()
>>> user1.friends
[]
>>> user2 = User.query.filter_by(id=2).first()
>>> user1.friends.append(user2)
>>> user1.friends
[<User('user1','us...@admin.com','2')>]
>>> user1.friends[0].added_by
[<User('admin','ad...@admin.com','1')>]

 

On Monday, 5 March 2012 15:54:27 UTC, Stefan wrote:

> I have been struggeling for a few days with this now and trying to see 
> if I maybe can get some help here. I'm using SQLAlchemy with Flask 
>
> This is what I have tried so far: 
>
> I got a user class defined like this: 
>
> association_table = db.Table('association', 
>     db.Column('user_id', db.Integer, db.ForeignKey('user.id')), 
>     db.Column('friend_id', db.Integer, db.ForeignKey('friend.id')) 
> ) 
>
> class Friend(db.Model): 
>     id = db.Column(db.Integer, primary_key=True) 
>
> class User(db.Model): 
>     id = db.Column(db.Integer, primary_key=True) 
>     username = db.Column(db.String(20), unique=True) 
>     password = db.Column(db.String(30)) 
>     friends = db.relationship("Friend", 
>                     secondary=association_table) 
>
>
>
> Basically I want to have a relationship to other objects of class User 
> in the field User.friends 
>
> What am I doing wrong here? 
>
> Thanks, 
> Stefan


On Monday, 5 March 2012 15:54:27 UTC, Stefan wrote:
>
> I have been struggeling for a few days with this now and trying to see 
> if I maybe can get some help here. I'm using SQLAlchemy with Flask 
>
> This is what I have tried so far: 
>
> I got a user class defined like this: 
>
> association_table = db.Table('association', 
>     db.Column('user_id', db.Integer, db.ForeignKey('user.id')), 
>     db.Column('friend_id', db.Integer, db.ForeignKey('friend.id')) 
> ) 
>
> class Friend(db.Model): 
>     id = db.Column(db.Integer, primary_key=True) 
>
> class User(db.Model): 
>     id = db.Column(db.Integer, primary_key=True) 
>     username = db.Column(db.String(20), unique=True) 
>     password = db.Column(db.String(30)) 
>     friends = db.relationship("Friend", 
>                     secondary=association_table) 
>
>
>
> Basically I want to have a relationship to other objects of class User 
> in the field User.friends 
>
> What am I doing wrong here? 
>
> Thanks, 
> Stefan

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sqlalchemy/-/5uqgtl5-9k0J.
To post to this group, send email to sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to