2017-02-09 86 views
1

我有两个班,TrialIdentifierTimeCoursesqlalchemy.exc.InvalidRequestError:映射器“...”没有财产“...”

时间进程具有含TrialIdentifier一个实例变量,我想设置两者之间的外键关系。

在TrialIdentifier

__tablename__ = 'trial_identifiers' 

relationships = relationship('TimeCourse', 
          back_populates = 'trial_identifier', uselist = False) 

在时间进程

__tablename__ = 'time_course' 

trial_identifier_id = Column(Integer, ForeignKey('trial_identifiers.id')) 
trial_identifier = relationship('TrialIdentifier', back_populates = 'relationships')` 

如果我的名字在TimeCourse变量trial_identifier以下错误被抛出:

sqlalchemy.exc.InvalidRequestError: Mapper 'Mapper|TimeCourse|time_course' has no property 'trial_identifier' 

如果我还有它命名为任何东西,一切正常。整个程序包建立在TimeCourse().trial_identifier上,所以我想尽可能避免重构它。或者至少了解这种行为。

回答

0

trial_identifier是一个专用变量,定义为_trial_identifier

要么除去setter和getter,或者与

_trial_identifier = relationship('TrialIdentifier', back_populates = 'relationships')` 

替换

trial_identifier = relationship('TrialIdentifier', back_populates = 'relationships')` 

解决了这个问题