モデルに便利なモデル メソッドを追加したいですdjango.contrib.auth.models.User
。前回確認したところ、User モデルを拡張するのは悪い習慣だと考えられていたので、これを行うためのベスト プラクティスは何ですか。
別のカスタム モデルがありますUserProfile
。ユーザー関連の便利なメソッドすべてにそれを使用する必要がありますか?
ベストアンサー1
モデルに何を追加しようとしているかによって異なります。ユーザーに関する詳細情報を追加する場合は、通常、次のUserProfile
メソッドを使用することをお勧めします。http://docs.djangoproject.com/en/dev/topics/auth/#ユーザーに関する追加情報の保存
ただし、モデルにカスタム メソッドまたはマネージャーを追加するだけの場合はUser
、次のようにプロキシ モデルを使用する方が論理的だと思います。
from django.contrib.auth.models import User
class UserMethods(User):
def custom_method(self):
pass
class Meta:
proxy=True
プロキシ モデルは元のモデルと同じデータベース テーブルで動作するため、モデルを物理的に拡張せずにカスタム メソッドを作成するのに最適です。User
ビュー内のへの参照を に置き換えるだけですUserMethods
。(もちろん、モデルの登録を解除し、代わりにプロキシ モデルを登録することで、管理ツールでこれを使用することもできますUser
。)
作成された元のモデルのインスタンスは、モデルUser
を介して即座にアクセス可能になりUserMethods
、その逆も同様です。詳細はこちら:http://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models
(注: プロキシ モデルには Django 1.1 以上が必要です)