에 많은 함께 많은 관계로 하나는 내가 지금은 사용자에게 기본 그룹을 추가 할 많은 관계SQLAlchemy의 : 많은 관계
_usergroup_table = db.Table('usergroup_table', db.metadata,
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('group_id', db.Integer, db.ForeignKey('group.id')))
class User(db.Model):
"""Handles the usernames, passwords and the login status"""
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(60), nullable=False, unique=True)
class Group(db.Model):
"""Used for unix-style access control."""
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(60), nullable=False)
users = db.relationship('User', secondary=_usergroup_table,
backref='groups')
에 많은을 가진 사용자 및 그룹 테이블을 가지고있다 수업. 물론 group_id 열과 관계를 Group 클래스에 추가 할 수는 있지만 단점이 있습니다. primary_group을 포함하여 User.group을 호출 할 때 모든 그룹을 얻고 싶습니다. 기본 그룹은 항상 그룹 관계의 일부 여야합니다.
편집 :
그것은 갈 수있는 방법은
class User(db.Model, UserMixin):
"""Handles the usernames, passwords and the login status"""
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(60), nullable=False, unique=True)
primary_group = db.relationship(UserGroup,
primaryjoin="and_(User.id==UserGroup.user_id,UserGroup.primary==True)")
class Group(db.Model):
"""Used for unix-style access control."""
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(60), nullable=False)
class UserGroup(db.Model):
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
group_id = db.Column(db.Integer, db.ForeignKey('group.id'))
active = db.Column(db.Boolean, default=False)
user = db.relationship(User, backref='groups', primaryjoin=(user_id==User.id))
group = db.relationship(Group, backref='users', primaryjoin=(group_id==Group.id))
내가 AssociationProxy 이것을 간단하게 할 수있는 연결 개체 것 같다,하지만 어떻게 내가 사용자 당 단 하나의 기본 그룹을 강요하는 걸까?
docs.sqlalchemy.org/ko/rel_0_7/orm/relationships.html#association-pattern) – urschrei
@urschrei 편집보기 – P3trus