Я использую 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
, поскольку данные эффективно импортированы, а строка имеетдобавлен в базу данных.Но title
и description
были заполнены пустой строкой, даже если в модели Experiment
эти два атрибута имеют blank=False
.
Мои вопросы: почему django-import-export
позволяет сохранять пустые строки для моделейу которых есть поля с blank=False
параметрами?И почему пакет не проверяет заголовки набора данных для соответствующих полей модели?
Как заставить django-import-export
проверять заголовки и пустые строки в полях, которые имеют blank=False
?