Foros del Web » Programando para Internet » Python »

cleaned_data al leer ficheros csv

Estas en el tema de cleaned_data al leer ficheros csv en el foro de Python en Foros del Web. Hola, Estoy teniendo problemas a la hora de subir un fichero y guardar sus datos como registros. El problema es que tengo que limpiar los ...
  #1 (permalink)  
Antiguo 09/03/2015, 16:30
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 10 años, 2 meses
Puntos: 0
Pregunta cleaned_data al leer ficheros csv

Hola,

Estoy teniendo problemas a la hora de subir un fichero y guardar sus datos como registros. El problema es que tengo que limpiar los datos con cleaned_data pero no se como implementarlo. Lo he utilizado antes para limpiar los datos (convertir las cadenas en decimales o none) que eran introducidos en formularios, sin embargo esta vez no se trata de un formulario si no de la lectura de un fichero csv. Mi codigo de lectura es este:

Código:
def pozo_files(f):
    reader = csv.DictReader(f, delimiter=',')
    for row in reader:
        codpozo=row['codpozo']
        coorx=row['coorx']
        coory=row['coory']
        tipo=row['tipo']
        cotatrapa=row['cotatrapa']
        profundidad=row['profundidad']
        cotafondo=row['cotafondo']
        material=row['material']
        materialpates=row['materialpates']
        diametro=row['diametro']
        largotrapa=row['largotrapa']
        seccionmayor=row['seccionmayor']
        seccionmenor=row['seccionmenor']
        numacometidas=row['numacometidas']
        origen=row['origen']
        observaciones=row['observaciones']
        pnt=Point(float(coorx),float(coory))

        my_file = Pozo(codpozo=codpozo, coorx=coorx, coory=coory, 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)
        my_file.save()
Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 09/03/2015, 18:16
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: cleaned_data al leer ficheros csv

Eso depende de que sea Pozo.

Es un modelo? un form?
Si es una instancia de un modelo entonces usas full_clean si es una instancia de un form entonces usas is_valid.

Documentación: https://docs.djangoproject.com/en/1....dating-objects
  #3 (permalink)  
Antiguo 10/03/2015, 04:35
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: cleaned_data al leer ficheros csv

Pozo es un modelo, por tanto, donde debería colocar full_clean en mi código? O debería ponerlo en el archivo models?

Muchas gracias!
  #4 (permalink)  
Antiguo 10/03/2015, 09:03
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: cleaned_data al leer ficheros csv

Tal como dice la documentación depende de donde lo pongas

Código Python:
Ver original
  1. from django.core.exceptions import ValidationError
  2.  
  3. # ...
  4.  
  5. my_file = Pozo(codpozo=codpozo, coorx=coorx, coory=coory, tipo=tipo, cotatrapa=cotatrapa,
  6.             profundidad=profundidad, cotafondo=cotafondo, material=material,
  7.             materialpates=materialpates, diametro=diametro, largotrapa=largotrapa,
  8.             seccionmayor=seccionmayor, seccionmenor=seccionmenor, numacometidas=numacometidas,
  9.             origen=origen, observaciones=observaciones, geom=pnt)
  10. try:
  11.     my_file.full_clean()
  12. except ValidationError as e:
  13.     # Do something based on the errors contained in e.message_dict.
  14.     # Display them to a user, or handle them programmatically.
  15.     pass
  16.  
  17. my_file.save()

Etiquetas: csv
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 02:37.