gpt4 book ai didi

python django-import-export 即使没有数据也导入模型数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:01 25 4
gpt4 key购买 nike

我正在使用django-import-export 包从csv 文件导入数据,基本上遵循readthedocs 中的入门教程。

我对简单配置中包的行为感到困惑。

我的模型是这样的:

class Experiment(models.Model):
title = models.CharField(max_length=255, blank=False)
description = models.TextField(blank=False)
research_project = models.ForeignKey(
ResearchProject, null=False, blank=False
)

我创建了一个 csv 文件来测试导入。文件 /tmp/experiment.csv 很简单:

h1,h1,research_project
v1,v2,66

(请注意,csv 的前两列具有不对应于任何字段模型的标题)

然后,我创建了一个资源:

class ExperimentResource(resources.ModelResource):

class Meta:
model = Experiment
exclude = ('id', )

def export(self, queryset=None, *args, **kwargs):
queryset = Experiment.objects.filter(id=kwargs['id'])
return super(ExperimentResource, self).export(queryset, *args, **kwargs)

def get_instance(self, instance_loader, row):
return False

现在,我可以尝试通过调用导入 /tmp/experiment.csv 数据:

dataset = Dataset().load(open('/tmp/experiment.csv').read())
result = ExperimentResource().import_data(dataset)
print(result.has_errors()) # for debug

最后一行打印 False,因为数据已有效导入并且一行已添加到数据库中。但是 titledescription 填充了一个空字符串,即使在 Experiment 模型中这两个属性有 blank=False.

我的问题是:为什么 django-import-export 允许为具有带 blank=False 参数的字段的模型保存空字符串?为什么包不检查相应字段模型的数据集 header ?

如何使 django-import-export 检查具有 blank=False 的字段中的 header 和空字符串?

最佳答案

那是因为 blank=False仅与表单相关,如文档 blank 中所述:

<罢工>

If True, the field is allowed to be blank. Default is False.

Note that this is different than null. null is purely database-related, whereas blank is validation-related. If a field has blank=True, form validation will allow entry of an empty value. If a field has blank=False, the field will be required.

如果不想禁止保存空值,设置 null=False , 但是 be aware of null for CharField

更新:由于上述解决方案没有帮助,另一种可能的解决方案是在 CharField 上提供验证器领域。 MinLengthValidator可以帮助您验证非空必填字段。

应用如下:

title = models.CharField(max_length=255, blank=False, validators=[MinLengthValidator(1)])
description = models.TextField(blank=False, validators=[MinLengthValidator(1)])

关于python django-import-export 即使没有数据也导入模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com