在多对多关系中(在flask-sqlalchemy中),记录有关该关系的其他信息的最佳方法是什么?

时间:2019-09-25 21:48:14

标签: python flask sqlalchemy flask-sqlalchemy

希望这不是基于意见的,但是我有以下模型:

owners = db.Table('owners',
    db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),
    db.Column('project_id', db.Integer, db.ForeignKey('project.id'), primary_key=True))

members = db.Table('members',
    db.Column('user_id', db.Integer, db.ForeignKey('user.id'), primary_key=True),
    db.Column('project_id', db.Integer, db.ForeignKey('project.id'), primary_key=True))

class User(Base):
    id = db.Column(db.Integer, primary_key=True, nullable=False)
    projects = db.relationship('Project', secondary=owners, backref=db.backref('owners'))
    memberships = db.relationship('Project', secondary=members, backref=db.backref('members'))
    def __repr__(self):
        return f'<User {self.email}>'

class Project(Base):
    id = db.Column(db.Integer, primary_key=True, nullable=False)
    def __repr__(self):
        return f'<Project {self.name}>'

据我了解,使用这样的帮助器表维护成本很低,通常是正确的方法,但是如您所见,对于两种不同类型的关系,我有两个不同的帮助器表。用户可以是所有者,也可以只是组的标准成员。

我已经研究过使用关联模型,但这似乎会使数据库更难以管理。

是否有一种很好的方式将用户记录为所有者或基本成员,而无需使用两个单独的帮助程序表,或者这是最好的方式?

0 个答案:

没有答案