多对多表格之间的关系

时间:2014-10-13 20:25:34

标签: python sql orm sqlalchemy flask-sqlalchemy

我想在多对多表格中创建关系,UserRoles,其中Project。我想要UserProjects相关的所有Roles关系。我对primaryjoinsecondaryjoin做了很多尝试,但我没有让它发挥作用。

以下是我的模特:

roles_users = db.Table('roles_users',
  db.Column('role_id', db.Integer, db.ForeignKey('role.id')),
  db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
  db.PrimaryKeyConstraint('role_id', 'user_id')
)

class User(db.Model, UserMixin):
  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.Unicode(80), unique=True, nullable=False)
  roles = db.relationship('Role', secondary=roles_users, backref='users')
  projects = db.relationship('Project' ???? )

class Role(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.Unicode(80), unique=True, nullable=False)
  project_id = db.Column(db.Integer, db.ForeignKey('project.id'), nullable=False)

class Project(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.Unicode(80), nullable=False)
  roles = db.relationship('Role', backref='project')

1 个答案:

答案 0 :(得分:1)

问题出在你的“参考资料”中。 我建议您使用以下链接来帮助您理解约束和关系。

  

http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#many-to-many

这是我发现最适合协会的链接。

  

http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#association-object