2012-04-09 10 views
5

私はDjangoにはかなり新しく、Drupalからそれに移行しました。DBにアプリ関連の変数を格納するためのdjangoイディオムはありますか?

Drupalでは、DBに格納されているモジュールレベルの変数(djangoの "application"を読んでください)を定義し、Drupalの "コアテーブル"を使用することができます。アイデアは、それだけで一つの値を格納するために全体の「モジュールテーブル」をインスタンス化するために、各モジュール(アプリ)を持ってしても意味がないだろうということですので、コアが提供

variable_set('mymodule_variablename', $value); 
variable_get('mymodule_variablename', $default_value); 
variable_del('mymodule_variablename'); 

:ようイディオムはものになるだろうモジュール間で共有される共通のものジャンゴの私の初心者の理解の最高に

は、Djangoはこのような機能を持たない、しかし - それは一般的なパターンであるので、 - 私は典型的な/標準/慣用的な方法があるかどうSOコミュニティにチェックをオンにすると思いましたこの問題を解決するためにdjango devsが使用します

(値は、設定ファイルに入れることができる定数ではありません。毎日更新する必要があり、リクエストごとに読み込む必要があります)。

答えて

6

あり、これを達成するためのアプリがありますが、私はその簡単な

ModelDictとして、ディスカスからdjango-modeldictをお勧めしたいのは、 データベースの設定のようなものを保存するための非常に効率的な方法です。モデル全体は、 (遅延)に変換され、キャッシュにも格納されます。 (処理中でもCACHE_BACKENDにも基づいている必要がある)のときにのみ無効になります。

+0

私はこれと似たようなものをしばらく探しています。これは良い実装のようです。 Disqusのための3つの喝采。 –

+0

ありがとうございます、それは完全に法案に合うようです。 :) – mac

2

静的でないデータはモデルに格納されます。あなたがアプリケーション間でデータや機能を共有する必要があるなら、私は共有アプリを作るというコンベンションを見てきました。これは、共有モデル、またはユーティリティ関数を格納します。

私が見たdjangoプロジェクトでは、データは通常特定のものです。保存しているデータは、そのデータを表すモデルでなければなりません。むしろ、私のデータを表す明示的なモデル/オブジェクトと、大幅に異なるデータを格納する一般的なオブジェクトがあります。

毎日変更される変数が1つまたは2つしか定義されていない場合、おそらくmemcachedのようなキー/バリューストアが役に立ちますか?

0

もう1つのModelDictです。 、データベース内のアプリ設定パラメータを格納するためのもの、それは(右の権限で)管理者のためにそれらを編集するための素敵なバックエンドを公開するという利点があります

https://github.com/jazzband/django-constance

:別の潜在的な、同様のソリューションは、Djangoのスタンスですそれは(それはない)文書から明らかではない場合は、あなたが設定を同じに設定することができます

:デフォルト値を処理し、また、キャッシングなどがあり

EDIT「Python的な方法を。」私。値に設定を設定するには、スタンスのインポート設定

設定から

を行います。variable_name = value

関連する問題