for prop in obj_mapper.iterate_properties:
if isinstance(prop, RelationshipProperty) and \
attributes.get_history(obj, prop.key).has_changes():
- obj_changed = True
- break
+ for p in prop.local_columns:
+ if p.foreign_keys:
+ obj_changed = True
+ break
+ if obj_changed is True:
+ break
if not obj_changed and not deleted:
return
id = Column(Integer, primary_key=True)
name = Column(String(50))
related_id = Column(Integer, ForeignKey('somerelated.id'))
- related = relationship("SomeRelated")
+ related = relationship("SomeRelated", backref='classes')
SomeClassHistory = SomeClass.__history_mapper__.class_
assert sc.version == 3
+ def test_backref_relationship(self):
+
+ class SomeRelated(Base, ComparableEntity):
+ __tablename__ = 'somerelated'
+
+ id = Column(Integer, primary_key=True)
+ name = Column(String(50))
+ related_id = Column(Integer, ForeignKey('sometable.id'))
+ related = relationship("SomeClass", backref='related')
+
+ class SomeClass(Versioned, Base, ComparableEntity):
+ __tablename__ = 'sometable'
+
+ id = Column(Integer, primary_key=True)
+
+ self.create_tables()
+ sess = Session()
+ sc = SomeClass()
+ sess.add(sc)
+ sess.commit()
+
+ assert sc.version == 1
+
+ sr = SomeRelated(name='sr', related=sc)
+ sess.add(sr)
+ sess.commit()
+
+ assert sc.version == 1
+
+ sr.name = 'sr2'
+ sess.commit()
+
+ assert sc.version == 1
+ sess.delete(sr)
+ sess.commit()