我有以下SQLAlchemy模型:
class PersonConsent(ModelAbstract):
__tablename__ = "personConsent"
id = db.Column(db.Integer, primary_key=True)
patientId = db.Column(db.Integer, db.ForeignKey("person.id"))
authorizedPersonId = db.Column(db.Integer, db.ForeignKey("person.id"))
attachmentId = db.Column(db.Integer)
# Additional models
authorizedPerson = db.relationship("Person", foreign_keys=[authorizedPersonId])
consents = db.relationship("PersonConsentType",
secondary=personConsentToTypeMap,
primaryjoin=id==personConsentToTypeMap.c.consentId,
secondaryjoin=PersonConsentType.id==personConsentToTypeMap.c.consentTypeId)
仅提供PersonConsent模型,如何确定构成consents
字段的项目模型?
例如,像
type(PersonConsent.consents) == PersonConsentType
答案 0 :(得分:4)
使用inspect
函数并按照正确的属性获取关系的目标模型。
from sqlalchemy import inspect
mapper = inspect(PersonConsent)
property = mapper.relationships['consents']
target = property.mapper.class_
assert target is PersonConsentType
你可以通过PersonConsent.consents.property.mapper.class_
来实现这一点,但它不那么通用。您可以使用上面的检查,例如,循环所有关系,即使您不知道他们的名字。