上谷と申します。(Blog:
http://d.hatena.ne.jp/re_guzy/)
> 1) プロフィールモデルを定義して使う (User.get_profile() が使える状態にする)
> 2) auth.models.User を継承する
1.0からはマルチテーブル継承が使えるので、あえてUser.get_profile()を使わなくてもいいんじゃないかと。
> 2) にしたときの細かい問題を、ちゃっちゃと直せるぐらいになればこんな事で悩むことは
> 無いのだろうと思いますが、現状は悩みまくりです。
昔自分もいろいろ試行錯誤したので、その時やったことを書いてみます。
Userを継承しただけでは不十分で、UserChangeForm・UserCreationForm・UserAdminも継承しないと
意図したようには動きません。
以下のコードで上記の問題はクリアできたはず。
あと、UserCustomだけ表示してUserを表示したくない場合、
admin.site.unregister(User)
ってやれば管理サイトでも表示されません。
#models.py
from django.contrib.auth import models as auth_models
from django.db import models
class UserCustom(auth_models.User):
objects = auth_models.UserManager()
#forms.py
from django.contrib.auth import forms as auth_forms
import models as my_models
class UserCustomChangeForm(auth_forms.UserChangeForm):
class Meta:
model = my_models.UserCustom
class UserCustomCreationForm(auth_forms.UserCreationForm):
class Meta:
model = my_models.UserCustom
#admin.py
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
import models as my_models
import forms as my_forms
class UserCustomAdmin(UserAdmin):
add_form = my_forms.UserCustomCreationForm
form = my_forms.UserCustomChangeForm
model = my_models.UserCustom