Foros del Web » Programando para Internet » Python »

Error [u"'' valor debe ser un n\xfamero decimal."]

Estas en el tema de Error [u"'' valor debe ser un n\xfamero decimal."] en el foro de Python en Foros del Web. Hola a todos! Tengo un problema con los DecimalFields en mi forms. Tengo un formulario bastante largo y quiero dejar algunos campos en blanco. El ...
  #1 (permalink)  
Antiguo 18/11/2014, 06:57
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta Error [u"'' valor debe ser un n\xfamero decimal."]

Hola a todos! Tengo un problema con los DecimalFields en mi forms. Tengo un formulario bastante largo y quiero dejar algunos campos en blanco. El problema es que cuando dejo en blanco algún campo DecimalField y envío el formulario, django me devuelve el siguiente error:

[u"'' valor debe ser un n\xfamero decimal."]


He probado en Forms a poner en estos campos required=False, e incluso en models a poner blank=True, null=True y hacer un makemigrations, un migrate y syncdb, y aún así me devuelve el mismo error.

Es que es imposible dejar un DecimalField en blanco? o hay alguna manera de que pueda funcionar?

Me han aconsejado que utilice el south pero tengo django 1.7 y según la página oficial de south no funciona para esta versión ya que tiene sus propias nuevas migraciones.

Aquí os dejo parte de mi forms y mi models, pero creo que esta todo correcto:

Código Python:
Ver original
  1. forms.py:
  2.  
  3. class PozosForm(forms.Form):
  4.     codpozo = forms.CharField(max_length=20)
  5.     coorx = forms.DecimalField(max_digits=13, decimal_places=5)
  6.     coory = forms.DecimalField(max_digits=13, decimal_places=5)
  7.     tipo = forms.CharField(max_length=20, required=False)
  8.     cotatrapa = forms.DecimalField(max_digits=6, decimal_places=2, required=False)
  9.     profundidad = forms.DecimalField(max_digits=6, decimal_places=2, required=False)
  10.     cotafondo = forms.DecimalField(max_digits=6, decimal_places=2, required=False)
  11.     material = forms.ChoiceField(choices=MATERIAL_POZOS, required=False)
  12.     materialpates = forms.ChoiceField(choices=MATERIAL_PATES, required=False)
  13.     diametro = forms.DecimalField(max_digits=20, decimal_places=2, required=False)
  14.     largotrapa = forms.DecimalField(max_digits=20, decimal_places=2, required=False)
  15.     seccionmayor = forms.DecimalField(max_digits=5, decimal_places=0, required=False)
  16.     seccionmenor = forms.DecimalField(max_digits=5, decimal_places=0, required=False)
  17.     numacometidas = forms.DecimalField(max_digits=2, decimal_places=0, required=False)
  18.  
  19. models.py:
  20.  
  21. class Pozo(models.Model):
  22.     # gid_pozo = models.IntegerField(primary_key=True)
  23.     # gid_colector = models.ForeignKey(Colector)
  24.     codpozo = models.CharField(max_length=20)
  25.     coorx = models.DecimalField(max_digits=13, decimal_places=5)
  26.     coory = models.DecimalField(max_digits=13, decimal_places=5)
  27.     tipo = models.CharField(max_length=20)
  28.     cotatrapa = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
  29.     profundidad = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
  30.     cotafondo = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True)
  31.     material = models.CharField(max_length=20)
  32.     materialpates = models.CharField(max_length=20)
  33.     diametro = models.DecimalField(max_digits=20, decimal_places=2, blank=True, null=True)
  34.     largotrapa = models.DecimalField(max_digits=20, decimal_places=2, blank=True, null=True)
  35.     seccionmayor = models.DecimalField(max_digits=5, decimal_places=0, blank=True, null=True)
  36.     seccionmenor = models.DecimalField(max_digits=5, decimal_places=0, blank=True, null=True)
  37.     numacometidas = models.DecimalField(max_digits=2, decimal_places=0, blank=True, null=True)

Sabe alguien que debo hacer?
Muchas gracias y un saludo!

Última edición por razpeitia; 18/11/2014 a las 08:42
  #2 (permalink)  
Antiguo 18/11/2014, 08:52
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error [u"'' valor debe ser un n\xfamero decimal."]

1. ¿Porque no usas un ModelForm en lugar de crear tu propio form?
Código Python:
Ver original
  1. class PozosModelForm(forms.ModelForm):
  2.     class Meta:
  3.         model = Pozos
  4.         fields = '__all__'
Mucho mas sencillo.

2. La regla va mas o menos así Django <= 1.6 usar South, 1.7 >= usar migraciones nativas. Hasta donde tengo entendido son 2 pasos makemigrations (donde genera los pasos a seguir para la migracion) y migrate (donde ejecuta esos pasos). Así que probablemente no estes aplicando las migraciones. Syncdb no aplica las migraciones.

Etiquetas: django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:05.