Saturday, November 22, 2014

Re: DecimalField returns 'This value must be a decimal number' when blank

# _*_ encoging: utf-8 _*_
from django import forms

class CuencasForm(forms.Form):
descripcion_cuenca = forms.CharField()

class ColectoresForm(forms.Form):
referencia = forms.CharField()

TIPO_POZO = (
('', ''),
('INDETERMINADO', 'Indeterminado'),
('CONTINUACION', 'Continuacion'),
('CONEXION SIN POZO', 'Conexion sin pozo'),
('ENTRONQUE', 'Entronque'),
('CABECERA', 'Cabecera'),
('PARTIDOR', 'Partidor'),
('TRANSICION', 'Transicion'),
('VERTIDO', 'Vertido'),
('VIRTUAL', 'Virtual'),
('JPL', 'JPL'),
('PRESA HINCHABLE', 'Presa hinchable'),
('AZUD', 'Azud'),
)

MATERIAL_POZOS = (
('', ''),
('INDETERMINADO', 'Indeterminado'),
('HORMIGON', 'Hormigon'),
('MIXTO', 'Mixto'),
('OBRA DE FABRICA', 'Obra de fabrica'),
('PIEDRA', 'Piedra'),
('PREFABRICADO', 'Prefabricado'),
)

MATERIAL_PATES = (
('', ''),
('INDETERMINADO', 'Indeterminado'),
('METALICOS', 'Metalicos'),
('NO EXISTEN', 'No existen'),
('POLIPROPILENO', 'Polipropileno'),
)

class PozosForm(forms.Form):
codpozo = forms.CharField(max_length=20)
coorx = forms.DecimalField(max_digits=13, decimal_places=5)
coory = forms.DecimalField(max_digits=13, decimal_places=5)
tipo = forms.ChoiceField(choices=TIPO_POZO, required=False)
cotatrapa = forms.DecimalField(max_digits=6, decimal_places=2, required=False)
profundidad = forms.DecimalField(max_digits=6, decimal_places=2, required=False)
cotafondo = forms.DecimalField(max_digits=6, decimal_places=2, required=False)
material = forms.ChoiceField(choices=MATERIAL_POZOS, required=False)
materialpates = forms.ChoiceField(choices=MATERIAL_PATES, required=False)
diametro = forms.DecimalField(max_digits=20, decimal_places=2, required=False)
largotrapa = forms.DecimalField(max_digits=20, decimal_places=2, required=False)
seccionmayor = forms.DecimalField(max_digits=5, decimal_places=0, required=False)
seccionmenor = forms.DecimalField(max_digits=5, decimal_places=0, required=False)
numacometidas = forms.DecimalField(max_digits=2, decimal_places=0, required=False)
origen = forms.CharField(max_length=20, required=False)
observaciones = forms.CharField(widget=forms.Textarea(), required=False)

TIPO_IMBORNAL = (
('', ''),
('INDETERMINADO', 'Indeterminado'),
('BUZON', 'Buzon'),
('CUADRADO', 'Cuadrado'),
('HEXAGONAL', 'Hexagonal'),
('IMBORNAL NO ESTANDAR', 'Imbornal no estandar'),
('RECTANGULAR', 'Rectangular'),
('RECTANGULAR DOBLE', 'Rectangular doble'),
('RECTANGULAR PEQUENO', 'Rectangular pequeno'),
('REJILLA NO ESTANDAR', 'Rejilla no estandar'),
('SEMICIRCULAR', 'Semicircular'),
)

class ImbornalesForm(forms.Form):
codimbornal = forms.CharField(max_length=20)
coorx = forms.DecimalField(max_digits=13, decimal_places=5)
coory = forms.DecimalField(max_digits=13, decimal_places=5)
tipo = forms.ChoiceField(choices=TIPO_IMBORNAL, required=False)
origen = forms.CharField(max_length=20, required=False)
observaciones = forms.CharField(widget=forms.Textarea(), required=False)

from django.contrib.gis.db import models
from django.contrib.auth.models import User
from demo.apps.obras.models import Obra

# Create your models here.

class Cuenca(models.Model):
# gid_cuenca = models.IntegerField(primary_key=True)
gid_obra = models.ForeignKey(Obra)
descripcion_cuenca = models.CharField(max_length=20)

class Colector(models.Model):
# gid_colector = models.IntegerField(primary_key=True)
# gid_cuenca = models.ForeignKey(Cuenca)
# gid_material = models.ForeignKey(Material)
# gid_obra = models.ForeignKey(Obra)
referencia = models.CharField(max_length=20)
# gid_seccion = models.ForeignKey(Seccion)

class Pozo(models.Model):
# gid_pozo = models.IntegerField(primary_key=True)
# gid_colector = models.ForeignKey(Colector)
codpozo = models.CharField(max_length=20)
coorx = models.DecimalField(max_digits=13, decimal_places=5)
coory = models.DecimalField(max_digits=13, decimal_places=5)
tipo = models.CharField(max_length=20)
cotatrapa = models.DecimalField(max_digits=6, decimal_places=2, default=None, blank=True, null=True)
profundidad = models.DecimalField(max_digits=6, decimal_places=2, default=None, blank=True, null=True)
cotafondo = models.DecimalField(max_digits=6, decimal_places=2, default=None, blank=True, null=True)
material = models.CharField(max_length=20)
materialpates = models.CharField(max_length=20)
diametro = models.DecimalField(max_digits=20, decimal_places=2, default=None, blank=True, null=True)
largotrapa = models.DecimalField(max_digits=20, decimal_places=2, default=None, blank=True, null=True)
seccionmayor = models.DecimalField(max_digits=5, decimal_places=0, default=None, blank=True, null=True)
seccionmenor = models.DecimalField(max_digits=5, decimal_places=0, default=None, blank=True, null=True)
numacometidas = models.DecimalField(max_digits=2, decimal_places=0, default=None, blank=True, null=True)
origen = models.CharField(max_length=20)
observaciones = models.CharField(max_length=255)
geom = models.PointField(srid=25830)
objects = models.GeoManager()

class Imbornal(models.Model):
# gid_imbornal = models.IntegerField(primary_key=True)
# gid_colector = models.ForeignKey(Colector)
codimbornal = models.CharField(max_length=20)
coorx = models.DecimalField(max_digits=13, decimal_places=5)
coory = models.DecimalField(max_digits=13, decimal_places=5)
tipo = models.CharField(max_length=20)
origen = models.CharField(max_length=20)
observaciones = models.CharField(max_length=255)
geom = models.PointField(srid=25830)
objects = models.GeoManager()# _*_ encoging: utf-8 _*_
from django.views.generic import CreateView, TemplateView, ListView,FormView
from django.shortcuts import render, render_to_response
from .forms import CuencasForm, PozosForm, ImbornalesForm
from django.core.urlresolvers import reverse_lazy, reverse
from django.contrib.gis.geos import Point
from django.template import RequestContext
from .models import *
from django.http import HttpResponseRedirect


# Create your views here.

def NuevaCuenca(request):
obra=request.POST['obra']
formulario = CuencasForm()
return render_to_response('cuencas/nuevacuenca.html',{'formulario':formulario, 'obra':obra}, context_instance=RequestContext(request))

def EdicionCuenca(request):

if not request.user.is_authenticated():
return HttpResponseRedirect('/')

if 'formulariopozo' in request.POST:
formulario = PozosForm(request.POST)
if formulario.is_valid():
titulo = 'Formulario de pozos'

codpozo=request.POST['codpozo']
x=request.POST['coorx']
y=request.POST['coory']
tipo=request.POST['tipo']
cotatrapa=request.POST['cotatrapa']
profundidad=request.POST['profundidad']
cotafondo=request.POST['cotafondo']
material=request.POST['material']
materialpates=request.POST['materialpates']
diametro=request.POST['diametro']
largotrapa=request.POST['largotrapa']
seccionmayor=request.POST['seccionmayor']
seccionmenor=request.POST['seccionmenor']
numacometidas=request.POST['numacometidas']
origen=request.POST['origen']
observaciones=request.POST['observaciones']

pnt=Point(float(x),float(y))
xy=Pozo(codpozo=codpozo, coorx=x, coory=y, tipo=tipo, cotatrapa=cotatrapa,
profundidad=profundidad, cotafondo=cotafondo, material=material,
materialpates=materialpates, diametro=diametro, largotrapa=largotrapa,
seccionmayor=seccionmayor, seccionmenor=seccionmenor, numacometidas=numacometidas,
origen=origen, observaciones=observaciones, geom=pnt)

xy.save()

return HttpResponseRedirect('/edicioncuenca/')

else:
formulario = PozosForm()


if 'formularioimbornal' in request.POST:
formularios = ImbornalesForm(request.POST)
if formularios.is_valid():
titulo = 'Formulario de imbornales'

codimbornal=request.POST['codimbornal']
x=request.POST['coorx']
y=request.POST['coory']
tipo=request.POST['tipo']
origen=request.POST['origen']
observaciones=request.POST['observaciones']

pnt=Point(float(x),float(y))
xy=Imbornal(codimbornal=codimbornal, coorx=x, coory=y, tipo=tipo,
origen=origen, observaciones=observaciones, geom=pnt)

xy.save()

return HttpResponseRedirect('/edicioncuenca/')

else:
formularios = ImbornalesForm()
return render_to_response('cuencas/edicioncuenca.html',{'formulario1':formulario, 'formulario2':formularios},context_instance=RequestContext(request))

def NuevoColector(request):

if not request.user.is_authenticated():
return HttpResponseRedirect('/')

if request.method=='POST':
formulario = ColectoresForm(request.POST)
if formulario.is_valid():
titulo = 'Formulario de colector'

r=request.POST['referencia']

rr=Colector(referencia=r)

rr.save()

return HttpResponseRedirect('/edicioncuenca/')

else:
formulario = ColectoresForm()
return render_to_response('cuencas/nuevocolector.html',{'formulario':formulario},context_instance=RequestContext(request))
Hi Collin

I'm using postgresql db, I' ve attached my views, forms and models. I' ve thought to do the ModelForm when I solve this problem, thanks for your advice!

Thank you very much!


El domingo, 16 de noviembre de 2014 18:51:43 UTC+1, elcaiaimar escribió:
Hello everybody, I've a problem with DecimalField at Forms. I've a long form in my template and I want to left some fields in blank. I've declared these fields with
required=False, but when I submit the form I receive this error: 'This value must be a decimal number'.

I've tried to declare blank=True, null=True in respective fields in models.py and make a syncdb but it continues without works

Does somebody know how could I solve this problem?

Thank you very much!

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/df6fd584-e398-4d48-bbcd-23c96518f8ee%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment