Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/08/2014, 16:41
andy2507
 
Fecha de Ingreso: julio-2011
Ubicación: Peru
Mensajes: 92
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Campo Chardfield aunmenta .0 sin ser campo decimal

me pasaron otro archivo mas completo esta es mi estructura

Models.py

Código Python:
Ver original
  1. class Product(models.Model):
  2.  
  3.     CodSucursal = models.CharField(max_length=60)
  4.     Sucursal = models.CharField(max_length=60)
  5.     CodDivision = models.CharField(max_length=200)
  6.     Division = models.CharField(max_length=300)
  7.     CodArea = models.CharField(max_length=60)
  8.     Area = models.CharField(max_length=13)
  9.     CodDpto = models.CharField(max_length=60)
  10.     Dpto = models.CharField(max_length=35)
  11.     CodLinea = models.CharField(max_length=200)
  12.     Linea = models.CharField(max_length=35)
  13.     CodSubLinea = models.CharField(max_length=200)
  14.     SubLinea = models.CharField(max_length=200)
  15.     CodModelo = models.CharField(max_length=60)
  16.     Modelo = models.CharField(max_length=50)
  17.     CodVariacion = models.CharField(max_length=60)
  18.     Variacion = models.CharField(max_length=50)
  19.     CodMarca = models.CharField(max_length=200)
  20.     Marca = models.CharField(max_length=60)
  21.     CodProveedor = models.CharField(max_length=200)
  22.     Proveedor = models.CharField(max_length=60)
  23.     Temporada = models.CharField(max_length=60)
  24.     Procedencia = models.CharField(max_length=60)
  25.     TipoNeg = models.CharField(max_length=15)
  26.     Color = models.CharField(max_length=200)
  27.     Talla = models.CharField(max_length=200)
  28.     SemAntig = models.CharField(max_length=200)
  29.     ConVenta = models.CharField(max_length=200)
  30.     ConStockOH = models.CharField(max_length=200)
  31.     EsRebate = models.CharField(max_length=200)
  32.     ConCobertura = models.CharField(max_length=200)
  33.     VtaUnd = models.CharField(max_length=200)
  34.     VtaSMF = models.FloatField()
  35.     Contr = models.FloatField()
  36.     Costo = models.FloatField()
  37.     Stock_OH = models.CharField(max_length=200)
  38.     Costo_OH = models.FloatField()
  39.     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',
  17.                     'Linea', 'CodSubLinea', 'SubLinea', 'CodModelo', 'Modelo', 'CodVariacion', 'Variacion', 'CodMarca',
  18.                     'Marca', 'CodProveedor', 'Proveedor', 'Temporada', 'Procedencia', 'TipoNeg', 'Color', 'Talla',
  19.                     'SemAntig', 'ConVenta', 'ConStockOH', 'EsRebate', 'ConCobertura', 'VtaUnd', 'VtaSMF', 'Contr',
  20.                     'Costo', 'Stock_OH', 'Costo_OH', 'Cbt')
  21.  
  22.         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
  23.                     for rowid in range(1, hoja1.nrows)]
  24.  
  25.    
  26.         for product in products:
  27.             product.CodSucursal = str(int(product.CodSucursal))
  28.             product.CodLinea = str(int(product.CodLinea))
  29.             product.CodModelo = str(int(product.CodModelo))
  30.             product.CodVariacion = str(int(product.CodVariacion))
  31.             product.CodMarca = str(int(product.CodMarca))
  32.             product.CodProveedor = str(int(product.CodProveedor))
  33.  
  34.         try:
  35.             Product.objects.bulk_create(products)
  36.  
  37.         except IntegrityError as e:
  38.             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