0
0

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-allauthを使用して、ユーザーを新規作成したとき、モデルに値を設定する

Last updated at Posted at 2023-06-17

結論

DefaultAccountAdapterを継承したカスタムクラスを作成し、new_user関数をオーバーライドすることで新規登録したときに値を設定できます。

前提

  • django-allauth機能を使用してサインアップ、もしくはソーシャル認証を通してのアカウント作成ができる状態まで実装できていることとします。
  • 使用モジュールの各バージョンは以下です
    • Django 3.2.19
    • django-allauth 0.54.0

手順

  1. 認証ユーザーモデルが存在しているアプリフォルダの中に新規でpyファイルを用意して以下のカスタムAdapterクラスを作成します。認証ユーザーモデルには値を設定できるフィールドをもたせるようにカスタマイズしておきます。
users/adapters.py
from allauth.account.adapter import DefaultAccountAdapter

class CustomAccountAdapter(DefaultAccountAdapter):
    def new_user(self, request):
        user = super().new_user(request)
        # Userモデルはカスタマイズしてhogeのフィールドを持たせておきます。
        user.hoge = <新規登録するときに設定したい値>
        return user
  1. settings.pyに以下のコードを加えておきます。
project/settings.py

INSTALLED_APPS = [
    
    # 追加
    'django.contrib.sites', #for djnago-allauth
    'allauth', #for djnago-allauth
    'allauth.account', #for djnago-allauth
    'allauth.socialaccount',#for djnago-allauth
]

# 追加
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
]

# 追加
SITE_ID = 1 #django-allauthがsitesフレームワークを使っているため

# 追加
ACCOUNT_ADAPTER = 'users.adapters.CustomAccountAdapter'

これで新規登録のときにユーザーモデルに値が設定されます。
以上です。

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?