Django学習メモ④

Userモデルの参照方法

DjangoデフォルトのUserモデルとのリレーションを行いたい場合にmodels.py上でどう参照するか

【意識すること】

  1. デフォルトのUserモデルを直接参照しない(後のカスタマイズが困難になる)
  2. カスタムユーザーモデルを作成して使用すること(最初はデフォルトをまんま継承しても良いので作っておく)
  3. AUTH_USER_MODEL参照とget_user_model()参照があるが、後者がベター
  4. カスタムユーザーモデルを作る前にmigrateしないこと(整合性の問題)

【settings.py サンプル】

#カスタムユーザーモデル定義
AUTH_USER_MODEL = 'app名.CustomUser'
 

 

※補足

・AUTH_USER_MODELで参照

 >settings.pyに書かれたAUTH_USER_MODELを参照する。stringで取ってくるため、views.pyから参照できない

 【models.py サンプル】

from django.db import models
from django.conf import settings
 
class WatchedList(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL
,on_delete=models.CASCADE)

 

・get_user_model()で参照

 >現在アクティブなAUTH_USER_MODELを参照しに行く(デフォルト or AUTH_USER_MODELに定義されているカスタムモデル)。classを参照する。

 【models.py サンプル】

from django.db import models
from django.contrib.auth import get_user_model
class WatchedList(models.Model):
user=models.ForeignKey(get_user_model(),on_delete=models.CASCADE)

 

↓公式ドキュメント

docs.djangoproject.com