If you want to perform additional logic when you save your model...
class MyModel(models.Model):
#...
def save(self, *args, **kwargs):
self.a_rel_model_set.add(O)
super(MyModel, self).save(*args, **kwargs)
self.another_rel_model_set.add(O2)
Or similar login in pre_save and post_save signals, since they are many2many fields, they will be overriden on an admin form, since the form.save_m2m is called after the model save, and whatever changes I do on those signals, will be wiped out.
The logic I had to put it in log_change (ModelAdmin method). I don't know whether it is the appropriate method, but is the first method executed after model saving. Is it the appropriate method for that? Admin post-save logic... or should we have an additional method in the admin for that?