UserProfileを作成し、AUTH_PROFILE_MODULEで定義することにより、django.contrib.auth.modelsから標準のユーザーモデルをカスタマイズしたアプリをリファクタリングしています。
問題は、UserProfileの属性が、ユーザーに表示される内容を決定するためにプロジェクト全体で使用されることです。
私はテストを作成し、このタイプのステートメントを繰り返し入力していました。
user = User.objects.get(pk=1)
user_profile = user.get_profile()
if user_profile.karma > 10:
do_some_stuff()
これは面倒で、DRYの原則に違反していないかどうか疑問に思っています。
ユーザーが要求されたときにUserProfileデータを自動的にロードするカスタムUserManagerを作成する方が理にかなっていますか。
UserProfile属性を繰り返し処理して、それらをUserモデルに追加することもできます。これにより、コードを散らかすカスタムモデル属性へのすべての参照を更新する必要がなくなります。
もちろん、UserモデルとUserProfileモデルを正しく更新できるようにするには、プロセスを逆にする必要があります。
Django風のアプローチはどれですか?