@receiver(m2m_changed, sender=Sale.products.through)
def sale_update_products(sender, instance, action, *args, **kwargs):
 if (action == u'post_add'):
  instance.update_products()

@ receiver ( m2m_changed , sender = Sale . products . through ) def sale_update_products ( sender , instance , action , * args , ** kwargs ) : if ( action == u'post_add' ) : instance . update_products ( )
signal for updating products for the sale - needed since the products wont be assigned to the sale when it is first saved .