Django 中的 create() 给了我 ValueError "字段'宽度'期望一个数字,但得到'NA'



我正试图将.csv文件中的几行插入Django中的SQLite中。我不想使用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-字段"size"应为数字,但得到的却是"NA";。(对于之前的csv行,所有内容都已正确插入。(

我觉得这很奇怪,因为在模型中,我有blank=Truenull=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}
)