Доступ к дополнительному столбцу во многих отношениях - PullRequest
0 голосов
/ 20 января 2019

У меня есть две таблицы: «Корпорации» и «Пользователи», каждая из которых может просматривать несколько пользователей, и каждый пользователь может подавать заявки в несколько корпораций.

Мои модели определены как:

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()

Но таким образом я не могу получить доступ к полю типа (для каждого пользователя, корпоративной комбинации это будет либо "короткий список", "нанятый", "отклоненный".

Это невозможнозапустить цикл и затем извлекать каждое значение отдельно из-за большого числа кандидатов.

Как я могу получить доступ к этому дополнительному столбцу, в то же время запрашивая отношения многие ко многим.

...