'Set object attributes to the values in dictionary new_data limiting
to only those keys in dict_element_visible_keys.
Returns a dictionary of the keys, values that have been changed.'

def set_from_dict(self, new_data):

    changed = self.collection.set_from_dict(new_data)
    for key in (k for k in new_data.keys() if (k in self.editable_keys)):
        new_val = new_data[key]
        old_val = self.__getattribute__(key)
        if (new_val == old_val):
            continue
        self.__setattr__(key, new_val)
        changed[key] = new_val
    return changed
