This is my method save on my form.py file.
This is the ErroValue:
Exception Type: ValueError
Exception Value:    
"<Nana: E>" needs to have a value for field "id" before this many-to-many relationship can be used.
1.-I understand that I'm saving my Nana not at the correct time. What Am I doing wrong?
2.-'habilidades' and 'especiliades' are select mutiple fields in html. I need to save that data to the "Nana" model.
  @transaction.atomic()
    def save(self):
        valid_data = self.cleaned_data
        documento_codigo = valid_data.pop('documento')
        documento_tipo_id = valid_data.pop('tipo_documento')
        documento = Documento(codigo=documento_codigo, tipo_documento_id=documento_tipo_id)
        documento.save()
        #habilidad
        habilidades_nombre = valid_data.pop('habilidades')
        habilidades_habilidades = Habilidad(habilidades_nombre)
        habilidades_habilidades.save()
        nana = Nana(documento=documento, **valid_data)
        nana.save()
        nana.habilidades.add(habilidades_habilidades)
        return nana
My form (without method save):
class NanaForm(forms.Form):
    nombre = forms.CharField(label='Nombre', max_length=200)
    apellido_paterno = forms.CharField(label='Apellido paterno', max_length=100)
    apellido_materno = forms.CharField(label='Apellido materno', max_length=100)
    fecha_de_nacimiento = forms.DateField(label='Fecha de nacimiento')
    documento = forms.CharField(label='Documento', max_length=60, required=True)
    tipo_documento = forms.CharField(label='Tipo de documento', max_length=100)
    direccion = forms.CharField(label='Dirección', max_length=100)
    telefono_o_celular = forms.CharField(label='Teléfono o celular', max_length=14)
    latitud = forms.CharField(label='Latitud', max_length=100)
    longitud = forms.CharField(label='Longitud', max_length=100)
    genero = forms.CharField(label='Género', max_length=100)
    habilidades = forms.CharField(label='Habilidades', max_length=100)
    especialidades = forms.CharField(label='Especialidades', max_length=100)
    # habilidades = forms.MultipleChoiceField(label="Habilidades", required=False, widget=forms.SelectMultiple)
    # especialidades = forms.MultipleChoiceField(label="Especialidades", required=False, widget=forms.SelectMultiple)
    foto = forms.ImageField(required=False)
UPDATE 1 (MODELS):
class Especialidad(models.Model):
    nombre = models.CharField(max_length=250)
    def __str__(self):
        return self.nombre
class Habilidad(models.Model):
    nombre = models.CharField(max_length=250)
    def __str__(self):
        return self.nombre
class Nana(Usuario):
    habilidades = models.ManyToManyField(Habilidad)
    especialidades = models.ManyToManyField(Especialidad)
    experiencia_con_mascotas = models.BooleanField(default=False)
    foto = models.ImageField(upload_to='nanas_fotos',
                            default='media/nana-default.png', null=True, blank=False)
    # antecedentes_policiales = models.FileField(upload_to='nanas_antecedentes_policiales')
    def __str__(self):
        return self.nombre
Base Usuario model
class Usuario(models.Model):
    class Meta:
        abstract = True
    nombre = models.CharField(blank=False, null=False, max_length=200)
    apellido_paterno = models.CharField(blank=False, null=False, max_length=100)
    apellido_materno = models.CharField(blank=True, null=False, max_length=100)
    fecha_de_nacimiento = models.DateField(blank=False, null=False)
    documento = models.OneToOneField(Documento, on_delete=models.CASCADE, blank=False, null=True)
    #documento = models.CharField(blank=False, null=False, max_length=100)
    #Se añadió tipo_documento como campo dentro de usuario. Solo así permite llamarlo como parte del modelo Nana.
    # tipo_documento = models.ForeignKey(TipoDocumento, on_delete=models.SET_NULL, null=True)
    telefono_o_celular = models.CharField(max_length=14)
    esta_activo = models.BooleanField(default=False)
    genero = models.CharField(blank=False, null=False, choices=GENERO, max_length=1, default='f')
    direccion = models.CharField(blank=False, null=False, max_length=160, default='')
    latitud = models.CharField(blank=False, null=False, max_length=60, default='')
    longitud = models.CharField(blank=False, null=False, max_length=60, default='')
Added view
class RegistroView(View):
    def get(self, request):
        nana_form = NanaForm()
        ls_tipos_de_documento = TipoDocumento.objects.values_list('id', 'nombre_corto')
        ls_habilidades = Habilidad.objects.values_list('id', 'nombre')
        ls_especialidades = Especialidad.objects.values_list('id', 'nombre')
        context = {'nana_form': nana_form, 'ls_tipos_de_documento': ls_tipos_de_documento, 'ls_especialidades': ls_especialidades, 'ls_habilidades': ls_habilidades, }
        return render(request, 'app_administrador/crear-registro-como-secretaria.html', context)
    def post(self, request):
        nana_form = NanaForm(request.POST, request.FILES)
        if nana_form.is_valid():
            nana_form.save()
        else:
            print(nana_form.errors)
            print(nana_form['habilidades'])
        return HttpResponseRedirect('/')