在多对多关系中访问额外的列

时间:2019-01-20 12:27:28

标签: mysql join sqlalchemy flask-sqlalchemy

我有两个表Corporates和Users,每个公司可以查看多个用户,每个用户可以申请多个公司。

我的模型定义为:

class Corporate(Dictifiable, db.Model):
    __tablename__ = 'corporate'

    id = Column(Integer, Sequence('corporate_id_seq'), primary_key=True)
    name = Column(String(1024), nullable=False)

    admins = db.relationship('User', secondary='corporate_admin')
    tests = db.relationship('Test', secondary='corporate_test')
    applicants = db.relationship('User', secondary='corporate_applicants')







class User(Dictifiable, db.Model, UserMixin):
    __tablename__ = 'user'

    applicant_for = db.relationship('Corporate',
                                    secondary='corporate_applicants')

我的多对多表定义为:

class CorporateApplicants(Dictifiable, db.Model):
    __tablename__ = 'corporate_applicants'

    user_id = Column(Integer, ForeignKey('user.id'), primary_key=True)
    corporate_id = Column(Integer, ForeignKey('corporate.id'),
                          primary_key=True)

    # i want to access this
    type = Column(db.Enum(ApplicationStatusTypes), nullable=True)

我的查询通常是这样完成的:

Corporate.query
.join(Corporate.applicants)# SQLAlchemy magic will make it join through the many to many
.options(contains_eager(Corporate.applications))
.all()

但是这种方式我无法访问类型字段(对于每个用户,公司组合将是“短名单”,“雇用”,“拒绝”。

由于申请人数众多,因此无法运行循环然后分别获取每个值。

如何在急切地查询多对多关系的同时访问此额外的列。

0 个答案:

没有答案