2024年4月1週目振り返り

今週やったこと

Djangoでカスタムユーザーを実装

新規開発しているDjangoのプロダクトで、カスタムユーザーのモデルを実装しました。

公式ドキュメントは以下の部分を読みました。

docs.djangoproject.com

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を使いました。

docs.djangoproject.com

今週学んだこと

DjangoのAbstractUserについて

Djangoでカスタムユーザーを定義する際に継承するAbstractUserがどのような実装になっているか気になったのでコードを読んでみました。

AbstractUserは以下に実装されていました。

github.com

AbstractBaseUserを継承して、usernameなどのフィールドが定義されています。

まだ試していないですが、カスタムユーザーを定義する際にDjango標準のUserが持っているフィールドをなくしたい場合はAbstractBaseUserを継承することも可能という情報もありました。
usernameなどのフィールドを定義しているのがAbstractUserなので、それらは継承せずに直接AbstractBaseUserを継承する、ということになるんだと実装を読んで理解しました。 ただ、AbstractUserはPermissionsMixinを継承していてDjangoが提供しているセキュリティ周りの機能が使えるので今回は私はAbstractUserを継承するようにしました。

このあたりのクラスの書き方はかなり勉強になる部分が多そうです。

参考になった記事など

ドキュメントについて

今ドキュメントを整備したりもしているのですが、生産性を上げるための情報をドキュメントにまとめるにはどうすればいいか考えていて、その関連の記事を読んでいました。
以下の記事がわかりやすくて参考になりました。 zenn.dev