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