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 originalclass 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 originalclass 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:
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