Решение
в модели
def __copy__(self):
_rate = AutocreditRate()
for prop in object_mapper(self).iterate_properties:
if (isinstance(prop, ColumnProperty) or isinstance(prop, RelationshipProperty) and prop.secondary):
setattr(_rate, prop.key, getattr(self, prop.key) if prop.key!='rid' else None)
return _rate
обратите внимание, что primary_key нужно игнорировать!
далее
_cars_rids = list(set(self.request.POST.getall('_cars_rid')))
for i, _cars_rid in enumerate(_cars_rids):
rate.car = Car.by_rid(_cars_rid)
if not i:
DBSession.add(rate)
else:
new_rate = copy.copy(rate)
DBSession.add(new_rate)
уверен, кому-то пригодится