/ / Django-リクエストからのユーザープロキシモデル-django、django-models

Django - リクエストからのユーザプロキシモデル - django、django-models

プロキシモデルを使用します User 好きな

class Nuser(User):
class Meta:
proxy = True
def __unicode__(self):
return u"%s %s" % (self.first_name, self.last_name)

ビュー全体で使用します。
私はこのオブジェクトのインスタンスを取得するための最良の方法を疑問に思っていました request.user

毎回

Nuser.objects.get(pk=request.user.pk)

それを行う簡単な方法はありませんか?

回答:

回答№1の場合は10

あなたの代わりにプロキシモデルのインスタンスを返すカスタム認証バックエンドを書くことができます User インスタンス:

from django.contrib.auth.backends import ModelBackend

class ProxiedModelBackend(ModelBackend):
def get_user(self, user_id):
try:
return Nuser.objects.get(pk=user_id)
except Nuser.DoesNotExist:
return None

あなたの settings.py

AUTHENTICATION_BACKENDS = ["my_project.auth_backends.ProxiedModelBackend",]

回答№2の場合は0

Djangoに、たとえば、 MyNurse 照会するたびにオブジェクト Nurse オブジェクト。 のクエリセット Nurse オブジェクトはこれらのタイプのオブジェクトを返します。プロキシオブジェクトのポイントは、コードが元の Nurse これらを使用し、独自のコードは、含まれている拡張機能を使用できます(とにかく他のコードは依存していません)。それを置き換える方法ではありません Nurse (または他の)モデルをどこでも独自の創造物でモデル化します。