SQLAlchemy多对多关系:从关联表中选择值

SQLAlchemy多对多关系:从关联表中选择值,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我试图查询具有以下模式的多对多关系 class ParentModel(db.Model): __tablename__ = 'parents' id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid4) first_name = db.Column(db.String(30)) last_name = db.Column(db.String(30)) phone_no = db.

我试图查询具有以下模式的多对多关系

class ParentModel(db.Model):
    __tablename__ = 'parents'
    id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid4)
    first_name = db.Column(db.String(30))
    last_name = db.Column(db.String(30))
    phone_no = db.Column(db.String(12))

    children = db.relationship('ParticipantModel', secondary='participant_parent')


class ParticipantModel(db.Model):
    __tablename__ = 'participants'
    id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid4)
    subject_id = db.Column(db.Integer)
    first_name = db.Column(db.String(30))
    last_name = db.Column(db.String(30))

    parents = db.relationship(ParentModel, secondary='participant_parent')


class ParticipantParentModel(db.Model):
    __tablename__ = 'participant_parent'
    id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid4)
    relationship = db.Column(db.String(20))  # I want this value along with parents dataset

    participant_id = db.Column(UUID(as_uuid=True), db.ForeignKey('participants.id'), primary_key=True)
    parent_id = db.Column(UUID(as_uuid=True), db.ForeignKey('parents.id'), primary_key=True)

    parents = db.relationship(ParentModel, backref=db.backref('parent_assoc'))
    participant = db.relationship(ParticipantModel, backref=db.backref('participant_assoc'))


class ParentSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = ParentModel
        include_fk = True


class ParticipantSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = ParticipantModel
        include_fk = True

    parents = ma.Nested(ParentSchema, many=True)
我正在使用以下查询获取参与者和家长的详细信息,但是我无法清楚地了解如何在家长结果集中显示/检索
ParticipantParentModel.relationship

participant\u p1=ParticipantModel.query.filter\u by(first\u name='p1').first()

任何关于我是否需要改变我的模式或方法的建议都将不胜感激

{
  "id": "272ab0f5-bde7-4759-ac0a-3928ef8a5103",
  "first_name": "p1",
  "subject_id": 1,
  "last_name": "l1",
  "parents": [
    {
      "id": "b7c32df0-4956-4217-9aa6-cb0960b29c65",
      "first_name": "parent1",
      "last_name": "last1",
      "mobile_no": "None"
      // need to show this parents relation to the child that is stored in association table
    },
    {
      "id": "bc9e5fab-89b7-4624-8a20-c7cc444e3ae8",
      "first_name": "parent1",
      "last_name": "last1",
      "mobile_no": "None"
      // need to show this parents relation to the child that is stored in association table
    }
  ]
}