0

最近、次の問題に対処しています。さまざまなソースからデータを保存および取得するための「アーカイブ」を構築しようとしているため、データの列と行の数は常に異なります。ユーザーがこれらの CSV ファイル (それぞれ別のファイル) を格納するためだけに新しいテーブルを作成できるようにすることは、Web 開発ガイドラインに重大な違反を犯し、Django で達成することも難しいと思います。そのため、データを格納するための属性値形式のアイデアを思いつきましたが、django で実装する方法がわかりません。

Django Admin でフォームを作成して、1) csv ファイルの列の名前と 2) その列の値 (より正確には: 3 つの値の列: 1 つは整数用、もう 1 つは浮動小数点用、もう 1 つは文字列を格納するためです.これを行うには、もちろん、CSV ファイルのデータを「長い」形式に「溶かす」必要があるため、ファイルは次のようになります。

col1 | col2 | col3
23 | 45.0 | 32

になります:

key| val
col1| 23
col2 | 45.0
col3 | 32

そして、私はその方法を知っています。ただし、ユーザーがアップロードしたファイルをそのような形式で処理できるかどうか、後で簡単なジャンゴの方法でデータを取得する方法がわかりません。そのような拡張機能 /widegts または問題へのアプローチ方法を知っていますか? または、それをグーグルで検索する方法は?私は調査を行いましたが、動的モデルの一般的なアプローチしか見つかりませんでした。私のケースではそれらを使用する必要はないと思います: http://en.wikipedia.org/wiki/Entity-attribute-value_model とここに動的モデルがありますアプローチ: https://pypi.python.org/pypi/django-dynamo - ただし、それが正しい答えかどうかはわかりません。

だから私の推測では、私はdjangoをあまりよく理解していませんが、いくつかの方向性に感謝しています.

4

1 に答える 1

1

いいえ、動的モデルは必要ありません。また、EAV (Entity Attribute Value) スキーマは避ける必要があります。設計が悪い。

アップロードされたファイルの処理方法については、こちらをお読みください。

インスタンスメソッドをオーバーライドする方法については、こちらを参照してください。save()これはおそらくあなたがする必要があることです。

また、あなたが呼ぶものmeltingは と呼ばれることに注意してくださいserializing。これらのトピックを検索する際には、正しい用語と定義を知っておくと役立ちます。

于 2013-06-25T11:25:20.437 に答える