02/02/2016, 14:22
|
| | Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 10 años, 1 mes Puntos: 0 | |
guardar contenido de ficheros csv con campos nulos Hola,
He habilitado en mi formulario una opción para introducir registros en la base de datos de forma masiva a través de un fichero CSV. Lo he probado y funciona siempre y cuando todos los campos del archivo estén rellenados. Sin embargo, si intento introducir un fichero con campos en blanco me salta error.
Tengo otros formularios de introducción de registros uno a uno y solucionaba este tipo de error con nombreformulario.cleaned_data[nombreitem] pero esta vez es diferente porque no existe un formulario de por medio.
¿Alguien conoce alguna solución?
Aquí les dejo mi código:
Models.py:
Código:
class Medios(models.Model):
titulo = models.CharField(max_length=140)
url = models.URLField(max_length=200)
fecha_creacion = models.DateField(default=None, blank=True, null=True)
fecha_cierre = models.DateField(default=None, blank=True, null=True)
pais = models.CharField(max_length=100, default=None, blank=True, null=True)
tematicas = models.CharField(max_length=255, default=None, blank=True, null=True)
email = models.EmailField(max_length=50, default=None, blank=True, null=True)
url_contacto = models.URLField(max_length=200, default=None, blank=True, null=True)
cobert_geo = models.CharField(max_length=140, default=None, blank=True, null=True)
audiencia_med = models.DecimalField(max_digits=8, decimal_places=2, default=None, blank=True, null=True)
cuenta_ingresos = models.DecimalField(max_digits=8, decimal_places=2, default=None, blank=True, null=True)
num_trabajadores = models.IntegerField(default=None, blank=True, null=True)
asociaciones = models.CharField(max_length=140, default=None, blank=True, null=True)
url_twitter = models.URLField(max_length=200, default=None, blank=True, null=True)
url_facebook = models.URLField(max_length=200, default=None, blank=True, null=True)
url_googleplus = models.URLField(max_length=200, default=None, blank=True, null=True)
url_instagram = models.URLField(max_length=200, default=None, blank=True, null=True)
url_linkedin = models.URLField(max_length=200, default=None, blank=True, null=True)
url_youtube = models.URLField(max_length=200, default=None, blank=True, null=True)
url_flickr = models.URLField(max_length=200, default=None, blank=True, null=True)
url_vimeo = models.URLField(max_length=200, default=None, blank=True, null=True)
url_tumbrl = models.URLField(max_length=200, default=None, blank=True, null=True)
url_pinterest = models.URLField(max_length=200, default=None, blank=True, null=True)
Views.py:
Código:
def medios_files(request, f):
reader = csv.DictReader(f, delimiter=',')
for row in reader:
titulo=row['titulo']
url=row['url']
fecha_creacion=row['fecha_creacion']
fecha_cierre=row['fecha_cierre']
pais=row['pais']
tematicas=row['tematicas']
email=row['email']
url_contacto=row['url_contacto']
cobert_geo=row['cobert_geo']
audiencia_med=row['audiencia_med']
cuenta_ingresos=row['cuenta_ingresos']
num_trabajadores=row['num_trabajadores']
asociaciones=row['asociaciones']
url_twitter=row['url_twitter']
url_facebook=row['url_facebook']
url_googleplus=row['url_googleplus']
url_instagram=row['url_instagram']
url_linkedin=row['url_linkedin']
url_youtube=row['url_youtube']
url_flickr=row['url_flickr']
url_vimeo=row['url_vimeo']
url_tumbrl=row['url_tumbrl']
url_pinterest=row['url_pinterest']
my_file = Medios(titulo=titulo, url=url, fecha_creacion=fecha_creacion, fecha_cierre=fecha_cierre,
pais=pais, tematicas=tematicas, email=email, url_contacto=url_contacto, cobert_geo=cobert_geo,
audiencia_med=audiencia_med, cuenta_ingresos=cuenta_ingresos, num_trabajadores=num_trabajadores,
asociaciones=asociaciones, url_twitter=url_twitter, url_facebook=url_facebook, url_googleplus=url_googleplus,
url_instagram=url_instagram, url_linkedin=url_linkedin, url_youtube=url_youtube, url_flickr=url_flickr,
url_vimeo=url_vimeo, url_tumbrl=url_tumbrl, url_pinterest=url_pinterest)
my_file.save()
Muchas gracias de antemano!
Un saludo |