Changes a given `changed_fields` on object, saves it and returns changed object.

def change_and_save(obj, update_only_changed_fields=False, save_kwargs=None, **changed_fields):
    """
    Changes a given `changed_fields` on object, saves it and returns changed object.
    """
    from chamber.models import SmartModel

    change(obj, **changed_fields)
    if update_only_changed_fields and not isinstance(obj, SmartModel):
        raise TypeError('update_only_changed_fields can be used only with SmartModel')

    save_kwargs = save_kwargs if save_kwargs is not None else {}
    if update_only_changed_fields:
        save_kwargs['update_only_changed_fields'] = True

    obj.save(**save_kwargs)
    return obj