今週やったこと
Djangoでカスタムユーザーを実装
新規開発しているDjangoのプロダクトで、カスタムユーザーのモデルを実装しました。
公式ドキュメントは以下の部分を読みました。
Djangoの標準機能でUserのモデルが存在するので、そちらを拡張する形でカスタムユーザーを定義しました。
from django.contrib.auth.models import AbstractUser class CustomUser(AbstractUser): pass
また、setting.pyにAUTH_USER_MODELを記載することで認証に使用するモデルを指定しました。
AUTH_USER_MODEL = "project_name.CustomUser"
Djangoのモデル実装
その他、ユーザーが扱う情報のモデルを複数実装しました。
選択式のフィールドはchoicesを使いました。
今週学んだこと
DjangoのAbstractUserについて
Djangoでカスタムユーザーを定義する際に継承するAbstractUserがどのような実装になっているか気になったのでコードを読んでみました。
AbstractUserは以下に実装されていました。
AbstractBaseUserを継承して、usernameなどのフィールドが定義されています。
まだ試していないですが、カスタムユーザーを定義する際にDjango標準のUserが持っているフィールドをなくしたい場合はAbstractBaseUserを継承することも可能という情報もありました。
usernameなどのフィールドを定義しているのがAbstractUserなので、それらは継承せずに直接AbstractBaseUserを継承する、ということになるんだと実装を読んで理解しました。
ただ、AbstractUserはPermissionsMixinを継承していてDjangoが提供しているセキュリティ周りの機能が使えるので今回は私はAbstractUserを継承するようにしました。
このあたりのクラスの書き方はかなり勉強になる部分が多そうです。
参考になった記事など
ドキュメントについて
今ドキュメントを整備したりもしているのですが、生産性を上げるための情報をドキュメントにまとめるにはどうすればいいか考えていて、その関連の記事を読んでいました。
以下の記事がわかりやすくて参考になりました。
zenn.dev