0

Im currently working on a proyect that uses Django for the back-end and ajax to POST and GET data. The problem is that i dont understand why "NOT NULL containt failed" error ocurred.. I thought that when a models field was "Blank=True", Null data was passed as Blank Data.

This is my MODEL:

class CLIENTES(models.Model):
    nombre = models.CharField(max_length=264)
    razon_social = models.CharField(max_length=264)
    direccion = models.CharField(max_length=264)
    localidad = models.CharField(max_length=264)
    condicion_iva = models.CharField(max_length=264)
    cuit = models.PositiveIntegerField()
    expreso = models.CharField(blank=True, max_length=264)
    domicilio = models.CharField(max_length=264)
    destino_transporte = models.CharField(max_length=264)
    descuento = models.PositiveIntegerField(default=0)
    observacion = models.CharField(blank=True, max_length=264)
    mail = models.EmailField(blank=True, max_length=264)
    tel = models.IntegerField(blank=True)
    fecha = models.DateTimeField(auto_now_add=True)
    proveedor = models.BooleanField(default=False)

Views.py

def crear_cliente(request):

    form = clientes_form(request.POST or None)
    data = {}
    if request.is_ajax():
        if form.is_valid():
            nombre = form.cleaned_data.get('nombre')
            try:
                cliente = CLIENTES.objects.get(nombre=nombre)

                data['nombre'] = cliente.nombre
                data['status'] = 'notOk'
                return JsonResponse(data)
            
            except:
                form.save()

                data['nombre'] = form.cleaned_data.get('nombre')
                data['status'] = 'ok'
                data['newUrl'] = HttpResponseRedirect(reverse("sistema:clientes")).url
                return JsonResponse(data)

Ajax

form.addEventListener('submit', e=>{
    e.preventDefault()

    const fd = new FormData()
    fd.append('csrfmiddlewaretoken', csrf[0].value)
    fd.append('nombre', nombre.value)
    fd.append('razon_social', razon_social.value)
    fd.append('direccion', direccion.value)
    fd.append('localidad', localidad.value)
    fd.append('condicion_iva', condicion_iva.value)
    fd.append('cuit', cuit.value)
    fd.append('expreso', expreso.value)
    fd.append('domicilio', domicilio.value)
    fd.append('destino_transporte', destino_transporte.value)
    fd.append('descuento', descuento.value)
    fd.append('observacion', observacion.value)
    fd.append('mail', mail.value)
    fd.append('tel', tel.value)
    
    fd.append('proveedor', proveedor.value)

    $.ajax({
        type: 'POST',
        url: url,
        enctype:'text/plain',
        data: fd,
        success: function(response){
            console.log(response)
            if (response.status == 'notOk') {
                
                sText = `Cliente ${response.nombre} ya existe`
                handleAlerts('danger', sText)
            }
            
            
            else{
                location.href = `${response.newUrl}`
            } 
        },
        error: function(error){
            
            console.log(error)
            handleAlerts('danger', 'Upss.. algo salio mal')
        },
        cache: false,
        contentType: false,
        processData: false, 

    })
})

Error

django.db.utils.IntegrityError: NOT NULL constraint failed: sistema_clientes.tel
Matias Coco
  • 351
  • 3
  • 9

0 Answers0