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

时间:2013-06-24 23:18:42

标签: django csv models key-value

最近我正在处理以下问题: 我正在尝试构建一个“存档”来存储和检索来自各种源的数据,因此数据将始终具有不同数量的列和行。我认为允许用户创建新表只是为了存储这些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方式检索数据。 你知道任何这样的扩展/扩展或如何解决问题?或者如何谷歌甚至?我做了我的研究,然而,我发现只有动态模型的一般方法,我不认为我的情况需要使用它们: http://en.wikipedia.org/wiki/Entity-attribute-value_model 这里是动态模型方法: https://pypi.python.org/pypi/django-dynamo - 但是,我不确定这是正确的答案。

所以我的猜测是我不太了解django,但我会对某些方向表示感谢。

1 个答案:

答案 0 :(得分:1)

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

阅读here了解如何处理上传的文件。

有关如何覆盖save()实例方法的信息,请参阅here。这个 可能就是你需要做的事情。

另外,请注意,您调用melting的内容称为serializing。这很有帮助 在搜索这些主题时了解正确的术语和定义。