기본 django-allauth 회원가입 양식은 이메일, 사용자 이름, 비밀번호만 제공하므로, 전화번호나 이름과 같은 추가 정보를 수집하기 위해 사용자 정의가 필요합니다. 📝
Django의 내장 User 모델에 추가 필드를 연결하기 위해 OneToOneField 관계를 가진 UserProfile 모델을 생성하는 것이 일반적인 패턴입니다. 이는 User 모델을 직접 수정하지 않고 확장하는 효과적인 방법입니다. 👤
django-allauth의 ACCOUNT_SIGNUP_FORM_CLASS 설정을 사용하여 사용자 정의 forms.Form 클래스를 지정함으로써 기본 회원가입 양식에 추가 필드를 통합할 수 있습니다. ⚙️
ACCOUNT_SIGNUP_FORM_CLASS 설정으로 지정된 사용자 정의 폼 클래스에 signup(self, request, user) 메서드를 구현하여, 사용자 생성 후(데이터베이스 저장 전) User 모델의 추가 필드를 설정하고 user.save()를 통해 저장합니다. ✍️
signup 메서드 내에서 user.save() 호출 후 생성된 사용자 ID를 기반으로 UserProfile 인스턴스를 생성하고, OneToOneField를 통해 해당 User와 연결하며, 전화번호와 같은 추가 프로필 정보를 저장합니다. 🔗
Django 모델에서 CharField나 TextField의 경우 null=True 대신 blank=True를 사용하고, 값이 없을 때는 빈 문자열("")로 저장하는 것이 모범 사례입니다. null=True는 주로 문자열 기반이 아닌 필드에 사용됩니다. 🚫🕳️
signup 메서드 내에서 self.cleaned_data 딕셔너리를 사용하여 제출된 폼 데이터에 접근하고, 이를 통해 User 모델이나 UserProfile 모델의 필드를 업데이트합니다. 📥
새로운 모델(UserProfile)을 생성하거나 기존 모델을 변경한 후에는 반드시 python manage.py makemigrations 및 python manage.py migrate 명령을 실행하여 데이터베이스 스키마를 업데이트해야 합니다. 🚀