Controle de inserção de relação muitos-para-muitos do Django

Eu tenho os seguintes modelos:

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

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

Agora eu quero duas coisas:

Eu quero controlar se umItem pode ser adicionado a umCollection.eu quero oCollection para atualizar alguns de seus campos se umItem foi adicionado ou removido.

Para o segundo assunto, sei que existe odjango.db.models.signals.m2m_changed que eu posso usar para ligar em mudanças da relação. É permitido / ok alterar oCollection dentro do retorno de chamada do sinal? Posso usar o sinal também para "abortar" a inserção do problema 1?

questionAnswers(2)

yourAnswerToTheQuestion