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+unsubscr...@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.
# _*_ 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))