0

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

所以我的猜测是我不太了解 django,但我会很感激一些指导。

4

1 回答 1

1

不,您不需要动态模型。您应该避免使用 EAV(实体属性值)模式。这是不好的设计。

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

请参阅此处了解如何覆盖save()实例方法。这可能是您需要做的。

另外,请记住,您所称melting的内容是serializing. 在搜索这些主题时,了解正确的术语和定义会很有帮助。

于 2013-06-25T11:25:20.437 回答