【Django】Userモデルを参照する方法【3パターン】

アイキャッチ画像
  • Userモデルを参照するには?
  • Userモデルの参照方法にはどんなパターンがある?

本記事ではこのような疑問を解決します。


Djangoで会員登録機能などを実装する場合、主にモデル定義においてUserモデルを参照する必要があります。


そこで今回はUserモデルを参照する方法について解説していきます。

Userモデルを参照する方法は3パターン

Userモデルを参照する方法は以下の3パターンあります。

  1. 直接Userを参照する

  2. AUTH_USER_MODELを参照する

  3. get_user_model( )で呼び出す

これから上記3つをそれぞれ解説していきますが、①のやり方はあまり現実的ではないため、②・③のやり方でUserモデルを参照することを推奨します。

理由はこちらのDjango公式ドキュメントにも書いてありますが、「①直接Userを参照する」でまた説明します。

①直接Userを参照する

1つ目は直接Userを参照する方法です。

直接Userを参照するとは、django.contrib.auth.modelsから直接Userを呼び出すことです。

models.pyにおいては以下のように記述します。

from django.db import models
from django.contrib.auth.models import User

class クラス名(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    ・・・他

上でも少し触れましたが、直接Userを参照する方法は基本的には利用しないと思っていいでしょう。

なぜならこの方法だと使い勝手の悪いデフォルトのUserモデルを参照することになるからです。

例えば会員登録機能を実装した場合、UserモデルはそれぞれのWebサービスに合った形でカスタマイズするのが通常です。

したがって、カスタマイズなしのデフォルトのUserモデルを参照することは基本的にはナンセンスであると言えます。

②AUTH_USER_MODELを参照する

2つ目はAUTH_USER_MODELを参照する方法です。

AUTH_USER_MODELはsettings.pyにてUserモデルを指定する際に使われます。

具体的な記述は以下の通りです。

AUTH_USER_MODEL = ‘アプリ名.User'

AUTH_USER_MODELの使い方としては、カスタマイズしたUserモデルをデフォルトのUserモデルに代わって使用するときにsettings.pyにて指定するというやり方です。

③get_user_model( )で呼び出す

3つ目はget_user_model( )で呼び出す方法です。

この方法はmodels.pyにてget_user_model( )を読み込んでUserモデルを呼び出します。

呼び出すUserモデルについては以下の通りです。

○AUTH_USER_MODELにカスタマイズしたUserモデルが指定されている場合
→カスタマイズしたUserモデルを呼び出す


○デフォルトUserモデルのままの場合
→デフォルトUserモデルを呼び出す

なお、具体的な記述例は以下の通りです。

from django.db import models
from django.contrib.auth import get_user_model

class クラス名(models.Model):
    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    ・・・他

まとめ

以上がUserモデルを参照する3パターンになります。

中でも1番よく使われるのは「②AUTH_USER_MODELを参照する」方法です。

カスタマイズしたUserモデルを指定して呼び出します。

Userモデルを参照する際にはぜひ使ってみてください。

関連記事

Djangoが学べるプログラミングスクールとは?おすすめのDjangoスクールとは? 本記事ではこのような疑問を解決します。DjangoはPythonで作られた中で1番メジャーなWebフレームワークです。みんなが普段利用するYouT[…]

アイキャッチ画像