def get_m2m_changes(current_qs, new_qs):
    """
    Get difference between states of a many to many relation.

    :arg django.db.models.QuerySet `current_qs`: objects from the current state of relation.
    :arg django.db.models.QuerySet `final_qs`: objects from the future state of m2m
    :returns: A tuple with 2 querysets for added and removed items from m2m
    """

    add_items = new_qs.exclude(
        pk__in=current_qs.values_list('pk', flat=True)
    )

    remove_items = current_qs.exclude(
        pk__in=new_qs.values_list('pk', flat=True)
    )

    return list(add_items), list(remove_items)