Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/08/2014, 10:08
andy2507
 
Fecha de Ingreso: julio-2011
Ubicación: Peru
Mensajes: 92
Antigüedad: 12 años, 9 meses
Puntos: 1
Campo que contiene 2 tipos de datos

Hola tengo un archivo de excel que tengo que cargar a mi B.D. lo cual ya lo hace pero tengo problema con un campo que con tiene 2 tipos de datos

Models.py

Código Python:
Ver original
  1. class Product(models.Model):
  2.  
  3.     Id_DataExcel = models.ForeignKey(DataExcel)
  4.     CodSucursal = models.CharField(max_length=60)
  5.     Sucursal = models.CharField(max_length=60)
  6.     CodDivision = models.CharField(max_length=200)
  7.     Division = models.CharField(max_length=300)
  8.     CodArea = models.CharField(max_length=60)
  9.     Area = models.CharField(max_length=13)
  10.     CodDpto = models.CharField(max_length=60)
  11.     Dpto = models.CharField(max_length=35)
  12.     CodLinea = models.CharField(max_length=200)
  13.     Linea = models.CharField(max_length=35)
  14.     CodSubLinea = models.CharField(max_length=200)
  15.     SubLinea = models.CharField(max_length=200)
  16.     CodModelo = models.CharField(max_length=60)
  17.     Modelo = models.CharField(max_length=50)
  18.     CodVariacion = models.CharField(max_length=60)
  19.     Variacion = models.CharField(max_length=50)
  20.     CodMarca = models.CharField(max_length=200)
  21.     Marca = models.CharField(max_length=60)
  22.     CodProveedor = models.CharField(max_length=200)
  23.     Proveedor = models.CharField(max_length=60)
  24.     Temporada = models.CharField(max_length=60)
  25.     Procedencia = models.CharField(max_length=60)
  26.     TipoNeg = models.CharField(max_length=15)
  27.     Color = models.CharField(max_length=200)
  28.     Talla = models.CharField(max_length=200)
  29.     SemAntig = models.CharField(max_length=200)
  30.     ConVenta = models.CharField(max_length=200)
  31.     ConStockOH = models.CharField(max_length=200)
  32.     EsRebate = models.CharField(max_length=200)
  33.     ConCobertura = models.CharField(max_length=200)
  34.     VtaUnd = models.CharField(max_length=200)
  35.     VtaSMF = models.FloatField()
  36.     Contr = models.FloatField()
  37.     Costo = models.FloatField()
  38.     Stock_OH = models.CharField(max_length=200)
  39.     Costo_OH = models.FloatField()
  40.     Cbt = models.CharField(max_length=200)




views.py
Código Python:
Ver original
  1. class DataExcelProcessView(TemplateView):
  2.     template_name = 'app/dataexcel_process.html'
  3.  
  4.     def get(self, request, *args, **kwargs):
  5.         return super(DataExcelProcessView, self).get(request, args, kwargs)
  6.  
  7.     def get_context_data(self, **kwargs):
  8.         ctx = super(DataExcelProcessView, self).get_context_data(**kwargs)
  9.         ctx['process'] = self.process_file()
  10.         return ctx
  11.  
  12.     def process_file(self):
  13.         object = get_object_or_404(DataExcel, pk=self.kwargs['pk'])
  14.         book = xlrd.open_workbook(object.file.path)
  15.         hoja1 = book.sheet_by_index(0)
  16.         fields = ('CodSucursal', 'Sucursal', 'CodDivision', 'Division', 'CodArea', 'Area', 'CodDpto', 'Dpto', 'CodLinea',  'Linea', 'CodSubLinea', 'SubLinea', 'CodModelo', 'Modelo', 'CodVariacion', 'Variacion', 'CodMarca', 'Marca', 'CodProveedor', 'Proveedor', 'Temporada', 'Procedencia', 'TipoNeg', 'Color', 'Talla',  'SemAntig', 'ConVenta', 'ConStockOH', 'EsRebate', 'ConCobertura', 'VtaUnd', 'VtaSMF', 'Contr', 'Costo', 'Stock_OH', 'Costo_OH', 'Cbt')
  17.  
  18.         products = [Product(Id_DataExcel=DataExcel.objects.get(pk=object.id),**{fields[i]: cell for i, cell in enumerate(hoja1.row_values(rowid))})  # recorrido para guardar la data
  19.                     for rowid in range(1, hoja1.nrows)]
  20.  
  21.        #=====codigo para parsear los datos=====
  22.         for product in products:
  23.             product.CodSucursal = str(int(product.CodSucursal))
  24.             product.CodLinea = str(int(product.CodLinea))
  25.             product.CodModelo = str(int(product.CodModelo))
  26.             product.CodVariacion = str(int(product.CodVariacion))
  27.             product.CodMarca = str(int(product.CodMarca))
  28.             product.CodProveedor = str(int(product.CodProveedor))
  29.  
  30.        #========================================
  31.         try:
  32.             Product.objects.bulk_create(products)
  33.  
  34.         except IntegrityError as e:
  35.             return False

Pero tengo problemas con el campo "Color" ese campo en el archivo de excel contiene 2 tipos de datos

archivo de excel :

Código:
CodSucursal	 Sucursal    .........   ........  .........  ........     Color
     20023	Primavera     .........   ........   ........  ........    ROS1
     20023	Primavera     .........   ........   ........  ........    BLA
     20023	Primavera     .........   ........   ........  ........    36951
     20023	Primavera     .........   ........   ........  ........    ROJ1
Data subida a mi B.D.

Código:
CodSucursal	 Sucursal    .........   ........  .........  ........     Color
     20023	Primavera     .........   ........   ........  ........    ROS1
     20023	Primavera     .........   ........   ........  ........    BLA
     20023	Primavera     .........   ........   ........  ........    36951.0
     20023	Primavera     .........   ........   ........  ........    ROJ1
no se como transformar el campo "Color" ese campo tiene 2 tipos de datos
cuando es ROS1 no hay problema ,el problema esta cuando es 36951 le aumenta el .0 decimal

alguien que me ayude por favor