Yaji_S’s diary

プログラミング学習のアウトプットブログ

【Django】Userモデルの拡張について

DjangoにはデフォルトでUserモデルがありますが、

細かな情報を登録しようとする場合、Userモデルを拡張する必要があります。

Userモデルの拡張には幾つか手法があるのですが、今回デフォルトで備わっているAbstractUserを継承した拡張Userモデル(CustomUser)を構築します。

 

app名/models.py
 
from django.db import models
from django.contrib.auth.models import AbstractUser # AbstractUserをインポート


class CustomUser(AbstractUser):
class Meta:
db_table = 'custom_user'# テーブル名
 
# 以下にな情報を設定
gender = models.CharField(verbose_name='性別', max_length=5, null=True, blank=True)
profession = models.CharField(verbose_name='職業', max_length=15, null=True, blank=True)
...
 
 
setting.py に下記コード追記
 
AUTH_USER_MODEL = 'app名.CustomUser'

 

ただし、今回の手法ではプロジェクト立ち上げの初期段階で実施する必要があります。

後から拡張する場合は新たなテーブル(profileなど)をUserと1対1のリレーションを組む方法が望ましいそうです。

 

app名/models.py
 
from django.db import models
from django.contrib.auth.models import User # Userモデルをインポート


class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE) # Userと1対1のリレーション
# 以下にな情報を設定
gender = models.CharField(verbose_name='性別', max_length=5, null=True, blank=True)
...