Create() в Django выдает мне ValueError "Поле 'width' ожидало число, но получило 'NA'".
Я пытаюсь вставить несколько строк из .csv файла в SQLite в Django. Я не хочу использовать import_data(), потому что я хотел бы иметь более детальный контроль для каждой вставки. Моя модель выглядит примерно так:
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'))))
Только имя имеет ограничение на уникальность.
Теперь, когда я запускаю get_or_create
и имею строку csv, в которой есть пробел для размера, я получаю ошибку "ValueError - Field 'size' expected a number but gets 'NA'". (Для строк csv до этого все вставляется правильно)
Мне кажется это странным, потому что в модели у меня есть blank=True
и null=True
для размера. Что я могу делать неправильно и как это исправить? Спасибо заранее!
Вы пытаетесь передать строку 'NA'
в качестве значения для поля size
, следовательно, это не работает. В логике, которую вы используете для создания объектов модели, вы должны заменить его на None
, так что что-то похожее на:
name = …
color = …
size = …
# ↓ replace 'NA' with None
if size == 'NA':
size = None
Box.objects.get_or_create(
name=name,
defaults={'color': color, 'size': size}
)