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

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

    コード
    

    -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の効率的なスキルアップに、
       是非お役立て下さい。