Django control de inserción de relación muchos a muchos

Tengo los siguientes modelos:

class Item(models.Model):
    # fields
    # ...

class Collection(models.Model):
    items = models.ManyToManyField(Item, related_name="collections")
    # other fields
    # ...

Ahora quiero dos cosas:

Quiero controlar si unItem se puede agregar a unCollection.Quiero elCollection para actualizar algunos de sus campos si unaItem fue añadido o eliminado.

Para el segundo número sé que existe ladjango.db.models.signals.m2m_changed Que puedo usar para enganchar en los cambios de la relación. ¿Está permitido / ok cambiar elCollection dentro de la señal de devolución de llamada? ¿Puedo usar la señal también para "abortar" la inserción del problema 1?

Respuestas a la pregunta(2)

Su respuesta a la pregunta