我正试图将.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=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}
)