DjangoのCustomUserの設計
解決したいこと
DjangoでWebアプリケーションを作成しています。
公式ドキュメントに従い、CustomUserを自分で設計しています。
その際のフィールドの設定で困っています。
最終的に目指している形
ユーザーは2種類用意したいと考えています。
1つ目は、管理者アカウントです。これは2つ目の一般アカウントを作成してその後管理する権限を持たせたいと考えています。
2つ目は、一般アカウントです。これは1つ目の管理者アカウントによって作成されたアカウントで、パスワードなどは自分で変更できますが、別の一般アカウントを作成することはできません。
管理者アカウントと一般アカウントは、OnetoManyで紐づいている状態が望ましいです。
また、別途開発者アカウントも用意したいです。
また、質問者(開発者)が管理者アカウントと一般アカウントの両方を、is_activeなどを用いて管理できるようにしたいと考えています。
開発者アカウントなしでも管理できそうですが、django標準のadminページが便利かなと思っています。
自分で試したこと・調べたこと
管理者アカウントをCustomUserとして、一般ユーザーは別にmodel.pyで設計をする。
CustomUserはAbstractUserとAbstractBaseUserがある。
柔軟性を考えて、CustomUserとしてAbstractBaseUserをユーザーモデルとして利用することにしました。
CustomUserは初回migrate前に作成しておく必要があること、またmigrate後はフィールドの編集が難しくなることが分かりました。
発生している問題
CustomUserを用いると、後からフィールドの編集をすることが面倒になり(方法は一応公式ドキュメントで見ました)、管理者アカウントに後から何かフィールドを追加する場合に困ってしまうと考えています。
設計案
上で試したことから
管理者アカウントのCustomUserモデルが最低限のユーザー情報(ユーザーID、ユーザー名、パスワード)を持ち、DetailTableモデルが詳細情報(メールアドレス、住所など)を持つようにすることを考えました。
CustomUserモデルとDetailTableモデルは、OneToOneFieldによって関連付けをすることで、DetailTableを編集することで、後から要素の追加が容易にできるようになるのではないかと考えています。
質問
以上の設計で問題ないのか、また別の方法で設計したほうが良いなどがあれば教えてください。
初学者ですので、表現や知識に誤りがあればそれについても指摘を頂けると嬉しいです。