- Userモデルを参照するには?
- Userモデルの参照方法にはどんなパターンがある?
本記事ではこのような疑問を解決します。
Djangoで会員登録機能などを実装する場合、主にモデル定義においてUserモデルを参照する必要があります。
そこで今回はUserモデルを参照する方法について解説していきます。
Userモデルを参照する方法は3パターン
Userモデルを参照する方法は以下の3パターンあります。
- 直接Userを参照する
- AUTH_USER_MODELを参照する
- 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[…]