Django 将csv文件上载到属性值模型

Django 将csv文件上载到属性值模型,django,csv,models,key-value,Django,Csv,Models,Key Value,最近我遇到了以下问题: 我正在尝试构建一个“归档”,用于存储和检索来自不同来源的数据,因此数据将始终具有不同的列数和行数。我认为,允许用户创建新表只是为了存储那些CSV文件(每个文件都在单独的文件中),这将严重违反web开发指南,在Django中也很难实现。这就是为什么我想到了存储数据的属性值格式,但我不知道如何在django中实现它 我想在Django Admin中构建一个表单,允许用户将一个包含N列的CSV文件上传到一个只包含两列的表中:1)CSV文件中的列名称,2)该列的值(更准确地说:三

最近我遇到了以下问题: 我正在尝试构建一个“归档”,用于存储和检索来自不同来源的数据,因此数据将始终具有不同的列数和行数。我认为,允许用户创建新表只是为了存储那些CSV文件(每个文件都在单独的文件中),这将严重违反web开发指南,在Django中也很难实现。这就是为什么我想到了存储数据的属性值格式,但我不知道如何在django中实现它

我想在Django Admin中构建一个表单,允许用户将一个包含N列的CSV文件上传到一个只包含两列的表中:1)CSV文件中的列名称,2)该列的值(更准确地说:三个值列:一个用于整数,一个用于浮点,一个用于存储字符串。要做到这一点,我当然必须“熔化”将CSV文件中的数据转换为“长”格式,以便文件:

col1 | col2 | col3
23 | 45.0 | 32
变成:

key| val
col1| 23
col2 | 45.0
col3 | 32
但是,我不知道是否有可能处理用户上传的文件,并在以后如何以简单的django方式检索数据。 你知道任何这样的扩展/WideGT或者如何解决问题?或者如何用谷歌搜索它?我已经做了研究,但是,我只找到了动态模型的通用方法,我认为我的案例不需要使用它们: 下面是动态模型方法: -然而,我不确定这是正确的答案


所以我猜我对django的理解不是很好,但我希望能给你一些指导。

不,你不需要动态模型。你应该避免EAV(实体属性值) 这是个糟糕的设计

阅读了解如何处理上载的文件

有关如何重写
save()
实例方法的信息,请参阅。此 这可能是你需要做的

另外,请记住,您所谓的
melling
称为
serialization
,这很有帮助
在搜索这些主题时,要知道正确的术语和定义。

一块一块地学习。否则,你将不知道你缺少的是拼图的哪些部分。你定义了哪些模型?你的表单在哪里?你的模板在哪里?你不懂django的哪些部分?你试过官方教程吗?是的,我试过了,但我想要什么这里没有提到要做的事。为了更清楚,我会编辑这个问题。谢谢你,非常感谢你,现在我知道该用谷歌搜索什么了!我想知道该用哪个词,我有统计背景,使用“融化”这个词很常见(至少在R中是这样)。此外,我不能投票支持你的答案,因为这是我的第一个主题,尽管我已经使用了几年:)@mhnatiuk投票没问题。谢谢你的接受。祝你好运解决了你的问题。好吧,在重新思考这个问题之后:现在我知道我可以用我前面描述的方式轻松地保存数据,但这提出了另一个问题,但来自不同的层面:一个你(@rantanplan)之前明确指出的设计问题。以“长”格式存储csv数据是一个好主意吗?提醒一下:数据本身在行和列方面具有不同的长度,而且我以后想用它来轻松地对数据进行子集(“在满足某些条件的地方选择***”),甚至合并不同的数据集。你能推荐一种阅读方法或讲座吗?@mhnatiuk行的长度并不重要。不过,列的长度确实如此。如果列中确实有这样的动态长度范围,请将这些数据存储在postgres的hstore(类似字典的)数据类型中。它支持某些类型的查询,这些查询可能对您的案例来说是足够的,也可能不足够@MNNATUC不考虑将数据加载到单独的无SQL后端,如MunGDB或Hadoop。取决于数据大小和要执行的分析类型。Hadoop适用于非常大的数据集。