2016-10-31 11 views
0

私はSQLAlchemyで新しくなっています。私はこのモデルを持っています:SQLAlchemyとの関連付けオブジェクトを持つクエリ要素

class AssociationUserClub(db.Model): 
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True) 
    club_id = db.Column(db.Integer, db.ForeignKey('club.id'), primary_key=True) 
    roleClub = db.Column(db.String(50) , nullable = False, server_default = "member") 
    club = db.relationship("Club", back_populates="members") 
    user = db.relationship("User", back_populates="clubs") 

class User(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(200), unique=True) 
    clubs = db.relationship("AssociationUserClub", back_populates="user") 

class Club(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(255), unique = True, nullable = False) 
    members = db.relationship("AssociationUserClub", back_populates="club") 

私は、彼がメンバーであるすべてのクラブで知っているすべてのユーザーのリストが必要です。

私はこのwhithしてみてください、私は正しい答えを見つけられませんでした:

User.query.filter(User.clubs.any(xxxx)).all() 

感謝

答えて

0

私はあなたの質問を理解していれば、正しく、この作品のようなものがでしょうか?

#get all users 
users = User.query.all() 

# for each user, look at the list of clubs they are in, and generate the list of the club 
for user in users: 
    clubs = user.clubs 
    for club in clubs: 
     # friends are = members of the club, if that member is not the user 
     # Ill use List comprehension for that. 
     friends = [member for member in club.members if member.user_id != user.id] 



     # edit, if you want to remember the club they are associated with 
     friends = dict([(member.club_id, member) for member in club.members if member.user_id != user.id]) 
関連する問題