me pasaron otro archivo mas completo esta es mi estructura
Models.py
Código Python:
Ver originalclass Product(models.Model):
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)]
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 un problema con el campo "Color" ese campo tiene 2 tipos de datos y lo guarda de esta manera
archivo excel
Código:
CodSucursal Sucursal CodDivision ...... ..... .... ..... ....... Color
20023 Primavera G06 ...... .... .... ..... ...... ROS1
20023 Primavera G06 ...... .... .... ..... ...... BLA
20023 Primavera G06 ...... .... .... ..... ...... 36951
guarda la data en al B.D. de esta forma
Código:
CodSucursal Sucursal CodDivision ...... ..... .... ..... ....... Color
20023 Primavera G06 ...... .... .... ..... ...... ROS1
20023 Primavera G06 ...... .... .... ..... ...... BLA
20023 Primavera G06 ...... .... .... ..... ...... 36951.0
como ven el campo "Color" tiene 2 tipos de datos como puedo solucionar eso cuando sea numerico no le ponga .0 decimal y si es cadena que lo deje igual
Espero su pronta ayuda