Estoy tratando de insertar varias filas del archivo .csv en SQLite en Django. No quiero usar import_data(), porque quería tener un control más granular para cada inserción. Mi modelo es algo como esto:
class Box(models.Model): name = models.CharField(max_length=30) color = models.CharField(max_length=30) size = LengthField(blank=True, null=True, default=None, decimal_places=2,validators=(MinValueValidator(0, field_type='Length'),MaxValueValidator(100, field_type='Length')))) Solo el nombre tiene una restricción para ser único. Ahora, cuando get_or_create y tengo una fila csv que tiene un espacio en blanco para el tamaño, aparece el error "ValueError: el campo 'tamaño' esperaba un número pero obtuvo 'NA'". (Para las filas csv antes de eso, todo se inserta correctamente).
Lo encuentro extraño porque en el modelo tengo blank=True y null=True para el tamaño. ¿Qué podría estar haciendo mal y cómo podría solucionarlo? ¡Gracias de antemano!
Bueno, intenta pasar la cadena 'NA' como valor para el campo de size , por lo tanto, eso no funciona. En la lógica que usa para crear objetos de modelo, debe reemplazarlo con None , algo similar a:
name = … color = … size = … # ↓ replace 'NA' with None if size == 'NA': size = None Box.objects.get_or_create( name=name, defaults={'color': color, 'size': size} )