Django Auth User モデルに便利なメソッドを追加する最良の方法は? 質問する

Django Auth User モデルに便利なメソッドを追加する最良の方法は? 質問する

モデルに便利なモデル メソッドを追加したいです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 以上が必要です)

おすすめ記事