2016-05-09 4 views
1

私の状況は、すべてのユーザーに対してカスタムである必要があるアプリケーションのようなフォームビルダーを開発しています。フォームがホストされ、データベース内で応答が収集されます。今、データベースのようなmysqlで同じことをする正しい方法は何ですか。列が不明なときにSQLデータベースにデータを格納する正しい方法

例として、テキストフィールドとラジオボタンとテキストフィールドの2つのフォームを想定します。また、そのモデルが作成されても、そこにはDjangoフォームを使用する方法がありますか、私は別の方法に行く必要があります。

+0

jsonfieldを使用できます。 – e4c5

+0

@ e4c5これはうまくいくでしょう。ありがとうございます。回答を追加してください。私はそれを受け入れます。 :) – georoot

答えて

1

最近、mysqlがJSON fieldsを導入しました。 MySQLの5.7.8のよう

は、MySQLはJSON(JavaScriptオブジェクト表記) ドキュメント内のデータへ 効率的なアクセスを可能にネイティブのJSONデータ型をサポートしています。あなたはそれがvarchar型のフィールドにJSONデータを保存することは可能だとあるのMySQLの最新バージョンを持っていない場合でも

:JSONデータ型は、文字列の列に JSON形式の文字列を格納上でこれらの利点を提供しますDjangoのJSONサポートを提供する多くの人がサポートしている非常に一般的な解決策です。third party libraries

サードパーティのライブラリが必要な理由は、DjangoにはJSONFieldが組み込まれていないためです。最近Postgresqlに1つ追加されましたが、mysqlはまだ遅れています。

mysqlに関係しない代替手段は、redisを使用することです。 Djangoはredisの優れたサポートを持っています。あなたが知っているように、redisハッシュはPython辞書に非常に似ています。 ORMのサポートには、mysql jsonフィールドのようにサードパーティのライブラリが必要です。しかし、Redisをセッション間で永続化し、非常に高速に照会できるPython辞書と考える方が簡単です。最後に、ハッシュはちょうど氷塊の先端です。

+0

私はあなたの答えに気付いたことは、赤目を使用しています。主にキャッシュとして使用されていません。アプリケーションがプライマリDBとしてレディを使用するところまで、私は今までケースを見つけていませんでした。まずは良いアイデアですか?もしそうなら、それはdjango ORM自体でサポートされていますか? – georoot

+0

redisは元々はキャッシュとして作成されましたが、現在は完全な機能を備えたキーバリューデータベース(noSQL)になっていますが、すべてのものがメモリに格納されているため高速化していますが、データもディスクに保存され、また、mysqlと同じようにデータを複製することさえできます。コメントが少し長くなっているので、答えに少し追加 – e4c5

関連する問題