Com relação ao atributo contatos adicionado a Classe Perfil e, consequentemente à Classe Convite eu entendi o seguinte:
Classe Perfil:
Cada id de perfil possui sua lista de contatos.
Classe Convite:
Cada id possui solicitante e convidado, em pares. Cada solicitante possui uma lista de contatos e cada convidado também.
def m_aceitar(self):
self.convidado.contatos.add(self.solicitante)
self.delete()
No código utilizado em aula, o self = Convite.objects.get(id=convite_id). Então o solicitante ( id=1), está sendo adicionado a lista de contatos do convidado (id=1) através do método .add. E em seguida o Convite.objects de id=1 é deletado.
Está certo esse meu entendimento?
Obrigado!