2016-12-11 6 views
1

GroupUserの2つのテーブルがあります。 usersは、同時に複数のグループに属することができます。relation by sqlalchemy Python

グループ

class Group(db.Model): 
     """ Group model """ 
     __tablename__ = "group" 
     id = db.Column(db.Integer, primary_key=True) 
     project_id = db.Column(db.Integer, db.ForeignKey("project.id"), nullable=True) 
     project = db.relationship("Project", foreign_keys=[project_id]) 
     active = db.Column(db.Boolean, default=True, index=True) 
     name = db.Column(db.String(64), index=True) 

ユーザー

class User(db.Model, UserMixin): 
    """ User model """ 
    __tablename__ = "user" 

    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(128), unique=True, index=True) 
    email_confirmed = db.Column(db.Boolean, default=False)  
    password = db.Column(db.String(256), nullable=True) 
    groups = db.relationship("Group", secondary=user_has_group, lazy="dynamic", 
        backref=db.backref("users", lazy="dynamic")) 

ユーザーのグループごとに表示しなければなりませんコードがあります。

groups = Group.query.all() 
for group in groups: 
    users = User.query.filter(group in User.groups).all() 

しかし、コードは実行されていません。

groupusersを取得する方法を教えてください。

答えて

1

UserGroupオブジェクトからそうback referencebackref=db.backref("users", lazy="dynamic")

を持っているあなた、あなたは、例えば、特定のグループのユーザーを取得するためにgroup.usersを使用することができますが

groups = Group.query.all() 
for group in groups: 
    users = group.users 
+0

ありがとう、非常に – Mark