Models.py
Código Python:
Ver original
class Product(models.Model): Id_DataExcel = models.ForeignKey(DataExcel) CodSucursal = models.CharField(max_length=60) Sucursal = models.CharField(max_length=60) CodDivision = models.CharField(max_length=200) Division = models.CharField(max_length=300) CodArea = models.CharField(max_length=60) Area = models.CharField(max_length=13) CodDpto = models.CharField(max_length=60) Dpto = models.CharField(max_length=35) CodLinea = models.CharField(max_length=200) Linea = models.CharField(max_length=35) CodSubLinea = models.CharField(max_length=200) SubLinea = models.CharField(max_length=200) CodModelo = models.CharField(max_length=60) Modelo = models.CharField(max_length=50) CodVariacion = models.CharField(max_length=60) Variacion = models.CharField(max_length=50) CodMarca = models.CharField(max_length=200) Marca = models.CharField(max_length=60) CodProveedor = models.CharField(max_length=200) Proveedor = models.CharField(max_length=60) Temporada = models.CharField(max_length=60) Procedencia = models.CharField(max_length=60) TipoNeg = models.CharField(max_length=15) Color = models.CharField(max_length=200) Talla = models.CharField(max_length=200) SemAntig = models.CharField(max_length=200) ConVenta = models.CharField(max_length=200) ConStockOH = models.CharField(max_length=200) EsRebate = models.CharField(max_length=200) ConCobertura = models.CharField(max_length=200) VtaUnd = models.CharField(max_length=200) VtaSMF = models.FloatField() Contr = models.FloatField() Costo = models.FloatField() Stock_OH = models.CharField(max_length=200) Costo_OH = models.FloatField() Cbt = models.CharField(max_length=200)
views.py
Código Python:
Ver original
class DataExcelProcessView(TemplateView): template_name = 'app/dataexcel_process.html' def get(self, request, *args, **kwargs): return super(DataExcelProcessView, self).get(request, args, kwargs) def get_context_data(self, **kwargs): ctx = super(DataExcelProcessView, self).get_context_data(**kwargs) ctx['process'] = self.process_file() return ctx def process_file(self): object = get_object_or_404(DataExcel, pk=self.kwargs['pk']) book = xlrd.open_workbook(object.file.path) hoja1 = book.sheet_by_index(0) 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') 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 for rowid in range(1, hoja1.nrows)] #=====codigo para parsear los datos===== for product in products: product.CodSucursal = str(int(product.CodSucursal)) product.CodLinea = str(int(product.CodLinea)) product.CodModelo = str(int(product.CodModelo)) product.CodVariacion = str(int(product.CodVariacion)) product.CodMarca = str(int(product.CodMarca)) product.CodProveedor = str(int(product.CodProveedor)) #======================================== try: Product.objects.bulk_create(products) except IntegrityError as e: 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:
Data subida a mi B.D.CodSucursal Sucursal ......... ........ ......... ........ Color 20023 Primavera ......... ........ ........ ........ ROS1 20023 Primavera ......... ........ ........ ........ BLA 20023 Primavera ......... ........ ........ ........ 36951 20023 Primavera ......... ........ ........ ........ ROJ1
Código:
no se como transformar el campo "Color" ese campo tiene 2 tipos de datosCodSucursal Sucursal ......... ........ ......... ........ Color 20023 Primavera ......... ........ ........ ........ ROS1 20023 Primavera ......... ........ ........ ........ BLA 20023 Primavera ......... ........ ........ ........ 36951.0 20023 Primavera ......... ........ ........ ........ ROJ1
cuando es ROS1 no hay problema ,el problema esta cuando es 36951 le aumenta el .0 decimal
alguien que me ayude por favor