def save_resource(self, data, obj): if not obj: obj = Resource() obj._created = True else: obj._created = False obj._changed = False obj._changed_fields = [] self._update_fields(obj, data, ['id', 'purposes']) if obj._created: print("%s created" % obj) print(obj.type_id) obj.save() old_purposes = set([purp.pk for purp in obj.purposes.all()]) new_purposes = set([purp.pk for purp in data['purposes']]) if old_purposes != new_purposes: obj.purposes = new_purposes obj._changed_fields.append('purposes') if obj._changed: if not obj._created: print("%s changed: %s" % (obj, ', '.join(obj._changed_fields))) obj.save() return obj