6

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)

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

4

2 に答える 2

14

インスタンスの代わりにプロキシモデルのインスタンスを返すカスタム認証バックエンドを作成でき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',]
于 2012-05-21T09:20:21.587 に答える
-1

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

于 2014-03-20T10:12:51.470 に答える