在Django ModelForm中获取CSV文件的标题

时间:2018-04-04 17:19:11

标签: python django django-forms django-file-upload

我正在构建一个django应用,让人们上传将存储在S3中的CSV(基于django-storages),然后由芹菜任务处理,然后将它们摄取到数据库中。

这些CSV可以是任意大小,从几行(Django将其存储为InMemoryUploadedFile)到数百兆字节(django将使用TemporaryUploadedFile。)

我在通用ModelForm上使用简单CreateView,但我想添加一种方法来检查文件中的第一行(标题)以验证CSV是否有我需要的所有列。

如果我知道文件的路径,这将非常简单。我只是使用python的标准文件和csv处理功能来读取csv模块的第一行并检查字段。但是,我如何使用上传的文件,它可能在内存中,或者它可能是一个临时文件,在模型中?

1 个答案:

答案 0 :(得分:1)

这个答案不会为你解释,但它应该足以解锁你。

从Django documentation的外观中,您可以使用内置方法来获取" TemporaryUploadedFile"的临时文件路径:

TemporaryUploadedFile.temporary_file_path()

要完成这一切,您必须在代码中使用一些逻辑来确定它是否是" InMemoryUploadedFile"或者" TemporaryUploadedFile"。从那里,您可以以不同方式查看每个对象以评估列。