On Thu, 21 May 2015, Mike Bayer wrote:
I think the best use case is to put it on both, using back_populates.
Validation check: am I correctly using relationship() in the following set
of three tables? (N.B. Other columns removed for clarity and space saving.)
class Agencies(Base):
__tablename__ = 'agencies'
name = Column(Unicode(48), Sequence('name_seq'), primary_key = True)
...
child1 = relationship('AgencyUnits', back_populates = 'agency', cascade =
'all, delete, delete-orphan')
child2 = relationship('Permits', back_populates = 'agency', cascade = 'all,
delete, delete-orphan')
child3 = relationship('Inspect', back_populates = 'agency', cascade = 'all,
delete, delete-orphan')
class AgencyUnits(Base):
__tablename__ = 'agencyUnits'
name = Column(Unicode(48), Sequence('name_seq'), primary_key = True)
parent_name = Column(Unicode(48), nullable = False, ForeignKey(\
'agencies.name'))
parent_id = relationship("Agency", back_populates = 'units')
...
child = relationship("AgencyContacts", back_populates = 'units', cascade =
'all, delete, delete-orphan')
class AgencyContacts(Base):
__tablename__ = 'agencyContacts'
contact_id = Column(Integer, Sequence('contact_id_seq'), primary_key=True)
...
unit_id = Column(Unicode(48), ForeignKey('agencyUnits.name'))
parent = relationship("AgencyUnits", back_populates = 'contacts')
Rich