如何设置SQLAlchemy关系,以使两个表彼此具有多个关系?

时间:2019-08-03 23:39:03

标签: python sqlalchemy flask-sqlalchemy

我正在尝试使用SQLAlchemy在网络应用中代表俱乐部和用户。用户必须具有俱乐部列表,并且俱乐部必须具有用户列表。我认为我已经通过多对多关系正确地做到了这一点,因为用户可以在多个俱乐部中。 但是,我不能成为俱乐部负责人。这个想法是,一个领导者仍然应该能够领导多个俱乐部,但是每个俱乐部只有一个领导者。

我尝试组合关系的不同组合,但是根本无法添加领导者。

list2

我希望能够创建用户并创建俱乐部。俱乐部在实例化时应以将成为领导者的用户作为参数。

1 个答案:

答案 0 :(得分:1)

这两条评论将带您到需要去的地方。建议的代码:

class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    # ...
    clubs = db.relationship('Club', secondary=user_club_assoc_table,
                            backref=db.backref('members', lazy='dynamic'))

class Club(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True, nullable=False)

    leader_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    leader = db.relationship('User', primaryjoin='club.leader_id == user.id')