初期化中にキャッシングするために、通常、DB からグローバル定数にデータをロードして保存する方法を教えてください。グローバル定数は後で再び変更されることはありません。読み込み時に DB クエリを作成して定数に入れるだけですか、それとも何らかの遅延読み込みメカニズムを使用しますか?
私が念頭に置いているのは、次のようなグローバル スコープのコードです。
SPECIAL_USER_GROUP = Group.objects.get(name='very special users')
OTHER_THING_THAT_DOESNT_CHANGE = SomeDbEnum.objects.filter(is_enabled=True)
# several more items like this
空のテスト データベースを使用してテストを実行すると、問題が発生しました。オプションは、必要なすべてのデータをフィクスチャに入れることですが、個々のテストを必要のない無関係なデータと結合することは避けたいと思います。
以下は良いスタイルと見なされますか?
@memoize
def get_special_user_group():
return Group.objects.get(name='very special users')
それとも、一般的な再利用可能なメカニズムが優先されますか?