I use save_formset instead of save_related, and I had the same problem until I realized that I missed two important lines inside the method:
instances = formset.save(commit=False)
at the beginning, and then, after the loop instances, to do something with each instance:
instance.save() #commit instance changes
formset.save_m2m() #commit the whole formset changes
in the end.
save_m2m() , formet 'new_objects', construct_change_message(self, request, form, formsets) contrib/admin/options.py
, , , - .