カスタマイズしたユーザーモデルの実装 - code for Django

カスタマイズしたユーザーモデルの実装

ここから、カスタマイズしたユーザーモデルの実装を進めていきましょう。

コード

-BASE/login/models.py

from django.contrib.auth.models import AbstractUser

from django.db import models

class CustomUser(AbstractUser):

age = models.IntegerField(null=True)

AbstractUserは、ハッシュ化されたパスワードの管理など、ユーザー情報を安全に管理するための機能を備えたユーザークラスのことです。

デフォルトのUserモデルが備えているフィールド(usenameはメールアドレスなど)の情報も使うことができます。

今回は、デフォルトのUserモデルにageというフィールドを追加しました。

これでひとまずカスタマイズされたユーザーモデルは完成です。

Userモデルの変更をdjangoに伝える

次に、デフォルトで使うユーザーモデルを変えることをdjangoに伝えていきましょう。

具体的には、settings.pyファイルの中で変更していきます。

コード

-BASE/loginproject/settings.py

AUTH_USER_MODEL = 'login.CustomUser'

この設定をしなければ、デフォルトのUserモデルが使われてしまいますので注意しましょう。

settings.pyファイルを変更した上で、makemigrationをしてどのようなテーブルが作られているかをみていきましょう。

コマンドライン

BASE

$ python manage.py makemigrations

これで、CustomUserテーブルの原型となるファイルができました。このファイルの中身を見ていきましょう。

(実際は非常に長くなってしまいますので、fieldの中身だけ取り出しています。)

コード

-BASE/login/migratoins/0001_initial.py

id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined, age, groups, user_permissions

デフォルトのユーザーモデルで使われるフィールドに加え、ageフィールド(太字の部分)もしっかりと作られていることを確認しましょう。

これで、CustomUserモデルを作り、このモデルを使うことをdjangoに伝えることができました。

次に、ユーザーを登録するためのフォームを作っていきましょう。

~Django無料講義~のご案内

Code for Djangoが、4時間超の無料Django講義をはじめました

  •  ・本を出版したCode for Djangoの
     製作者が作ったサイトです。
  •  ・Code for Djangoの内容も、
     動画で詳しく解説しています。
  •  ・動画は順次ふやしていきますので、
     ただで学び続けることが可能です。
  •  ・Djangoの効率的なスキルアップに、
     是非お役立て下さい。
Created with