SqlAlchemy - Фильтрация по атрибуту отношения

У меня нет большого опыта работы с SQLAlchemy, и у меня есть проблема, которую я не могу решить. Я пробовал искать и пробовал много кода. Это мой класс (сокращенный до наиболее значимого кода):

class Patient(Base):
    __tablename__ = 'patients'
    id = Column(Integer, primary_key=True, nullable=False)
    mother_id = Column(Integer, ForeignKey('patients.id'), index=True)
    mother = relationship('Patient', primaryjoin='Patient.id==Patient.mother_id', remote_side='Patient.id', uselist=False)
    phenoscore = Column(Float)

, и я хотел бы опросить всех пациентов, у которых феноскор матери (например) == 10

Как уже говорилось, я пробовал много код, но я его не понимаю. Логическим решением, на мой взгляд, было бы

patients = Patient.query.filter(Patient.mother.phenoscore == 10)

, потому что вы можете получить доступ к .mother.phenoscore для каждого элемента при выводе, но этот код этого не делает.

Есть ли (прямая) возможность фильтрации по атрибуту отношения (без написания оператора SQL или дополнительного оператора соединения), мне нужен этот вид фильтра более одного раза.

Даже если нет простого решения, я рад получить все ответы.

84
задан Dadep 14 September 2018 в 07:18
поделиться