我有两个表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()
但是这种方式我无法访问类型字段(对于每个用户,公司组合将是“短名单”,“雇用”,“拒绝”。
由于申请人数众多,因此无法运行循环然后分别获取每个值。
如何在急切地查询多对多关系的同时访问此额外的列。