自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【Django】ユーザー作成時に何らかの処理を行う方法【saveメソッドオーバーライド】

thumbnail

カスタムユーザーモデルを使用している時、ユーザーアカウント新規作成時に何らかの処理を行って欲しい場合。

そういう時はSignupFormのsaveメソッドをオーバーライドする。

SignUpFormのコード

from django.contrib.auth.forms import UserCreationForm
from .models import CustomUser

class SignupForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model   = CustomUser
        fields  = ("username")


    def save(self, request,  commit=True, *args, **kwargs):

        #ユーザーモデルのオブジェクト作成(ただし、保存をしない)
        user    = super().save(commit=False)

        #生のパスワードをハッシュ化した上で、モデルオブジェクトの属性にセットする。
        user.set_password(self.cleaned_data["password1"])

        #保存する
        if commit:
            user.save()

        #TODO:ここに任意の処理を追加する。

        return user
スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ