開発ドキュメントで説明されているように、django ユーザー モデルを拡張します。元の User モデルの機能のほとんどを保持したくないので、AbstractUser クラスを拡張します。私はsettings.pyで定義しました:
AUTH_USER_MODEL = 'myapp.CustomUser'
私のユーザークラス:
class CustomUser(AbstractUser):
custom_field = models.ForeignKey('OtherModel')
objects = UserManager()
すべて正常に動作しているように見えますが、管理サイトで管理しようとすると:
admin.site.register(CustomUser, UserAdmin)
管理者の CustomUser 作成ページで次のエラーが表示されます (パスワード確認フォームの検証後)。
AttributeError: Manager isn't available; User has been swapped for 'myapp.CustomUser'
ポイントは、元の User モデルと同じ作成プロセス (パスワード検証を伴う 2 段階のプロセス) を行うために、このモデルを管理サイトで管理する必要があるということです。