🖥

#django | AbstractUser でカスタムユーザーを作ってマイグレーションするまでの手順のデモ

に公開

django-custom-user-demo

django で AbstractUser でカスタムユーザーを作ってマイグレーションするまでの最小手順のデモ

Comands

django-admin startproject some
cd some

./manage.py startapp users

users/models.py

from django.db import models

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
  middle_name = models.CharField(max_length=255, null=True, blank=True)

some/settings.py

+ AUTH_USER_MODEL = 'users.User'
INSTALLED_APPS = [
+    'users.apps.UsersConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

users/admin.py

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import User

admin.site.register(User, UserAdmin)

Comands

./manage.py makemigrations
./manage.py migrate

Create user and show ext field

./manage.py shell
In [2]: from users.models import User

In [3]: u = User.objects.create(middle_name='yay')

In [4]: u.middle_name
Out[4]: 'yay'

Code diffs are on merged PR

参考

プロジェクトの開始時にカスタムのユーザーモデルを使用する¶
新しくプロジェクトを始める場合は、デフォルトの User で十分である場合でも、カスタムユーザーモデルを作成>することを強く推奨します。このモデルはデフォルトのユーザーモデルと同様に動作しますが、必要に応じて将来的にカスタマイズすることができます:

Django の認証方法のカスタマイズ | Django ドキュメント | Django


カスタムUserを使う場合の注意点
カスタムUserを使うには、migrationsのinit(0001)時点でカスタムUserを使うことを含めなければならない。

Djangoでは常にカスタムUserを使用すべき - Qiita

すでにmigrateしている場合は、DBを初期化してmakemigrationsし直すのが楽。


アプリケーションを独立させると、他プロジェクトでの再利用性と、アプリケーション単位でダンプファイル操作が可能になるメリットがあります。

「users」はcookiecutter-djangoでも使われている名前です。こちらで統一するのがよいと思います。
参考:cookiecutter-djangoを使ってみた

Django ユーザー カスタマイズ方法 - Qiita

その他の参考記事

DjangoのUserモデルを継承してカスタマイズ | Hornet|静岡拠点のWeb、ホームページ制作

Userモデルのカスタマイズ | Narito Blog

Django Best Practices - William Vincent

Django マイグレーション まとめ - Qiita

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/1853

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-05-15

Discussion