parent = prop.parent.primary_mapper()
relation = cls(parent, prop.secondary, pj, sj, backref=prop.key, is_backref=True, **self.kwargs)
mapper._compile_property(self.key, relation);
+ elif not isinstance(mapper.props[self.key], PropertyLoader):
+ raise exceptions.ArgumentError("Cant create backref '%s' on mapper '%s'; an incompatible property of that name already exists" % (self.key, str(mapper)))
else:
# else set one of us as the "backreference"
parent = prop.parent.primary_mapper()
finally:
table.drop()
+ def testpropconflict(self):
+ """test that a backref created against an existing mapper with a property name
+ conflict raises a decent error message"""
+ mapper(Address, addresses)
+ mapper(User, users,
+ properties={
+ 'addresses':relation(Address, backref='email_address')
+ })
+ try:
+ class_mapper(Address)
+ class_mapper(User)
+ assert False
+ except exceptions.ArgumentError:
+ pass
+
def testrefresh(self):
mapper(User, users, properties={'addresses':relation(mapper(Address, addresses))})
s = create_session()