4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-05-15

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

チャットメンバー募集

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

Twitter

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?