私はUserモデルを拡張したいので、いくつかの追加のフィールドと関数を入れることができます(フィールドだけでなく、そうでなければ(私は醜いと思う)get_profile()を使うことができます。Djangoユーザーモデルを拡張する(request.userで機能させる)、Django 1.2.3
また、私はこのように、からrequest.userでその新しい拡張Userモデルを使用したいと思います:
拡張ユーザーモデル:
# imports etc
class CustomUser(User):
extra_field = ...
def extra_function(self):
...
return ...
使用例ビュー:
# imports etc
def extra_function_view(request):
print request.user.username
print request.user.extra_field
request.user.extra_function()
return HttpResponse(...)
上記のコードは、extra_fieldとextra_functionがUserモデルにないため、明らかに機能しません。
これで、認証バックエンドを使用してこれを実現する方法を見つけました。これはちょっと複雑で、Django 1.2.3では動作しませんでした。
AUTHENTICATION_BACKENDS = (
'myproject.auth_backends.CustomUserModelBackend',
)
...
CUSTOM_USER_MODEL = 'accounts.CustomUser'
さらに、信号を使用するなど、いくつかの方法が試されましたが、これはうまくいきませんでした。私にとって、唯一の解決策は、Django内のUserモデルを調整するようです(これは、Djangoのソースコードを調整するエレガントなソリューションではありませんが、コードワイズのきれいな解決策です)。
だから私はこれのための解決策を探しています。今
ステファン
私がやったのと似ていますが、私はモデルの継承をしています。 –
完全に理解でき、有効ですが、それでも私は終わりには迷惑をかけました:) – Xealot
今何を言っていますか?オリジナルのDjango Userモデルを編集するための認証バックエンドに行く必要があるのですか?もしそうなら、contrib.authディレクトリを自分のプロジェクトにコピーするだけで十分ですし、Djangoを自分の設定に追加するときに分かりますか? – Boemknaldaarstaatieal