사용앱 : accounts
1. settings.py 수정
INSTALLED_APPS = [
...
'accounts',
]
사용자 계정을 관리할 앱을 생성하여 등록해줍니다.
2. account/models.py 생성
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
phone = models.CharField(max_length=30, blank=True, null=True)
추가하고자하는 필드를 지정합니다.
저는 "phone"으로 지정하였습니다.
3. settins.py 수정
AUTH_USER_MODEL = 'accounts.CustomUser'
방금위에서 만든 사용자 모델을 사용하도록 세팅을 해줍니다.
4. accounts/admin.py 수정
from django.contrib import admin
from .models import CustomUser
admin.site.register(CustomUser)
관리자페이지에 사용자 모델을 등록해줍니다.
5. accounts/serializers.py 생성
from rest_framework import serializers
from allauth.account.adapter import get_adapter
from allauth.account.utils import setup_user_email
from rest_auth.registration.serializers import RegisterSerializer
class CustomRegisterSerializer(RegisterSerializer):
phone = serializers.CharField(
required=False,
max_length=30,
)
def get_cleaned_data(self):
data_dict = super().get_cleaned_data()
data_dict['phone'] = self.validated_data.get('phone', '')
return data_dict
6. settings.py 수정
REST_AUTH_REGISTER_SERIALIZERS = {
'REGISTER_SERIALIZER': 'accounts.serializers.CustomRegisterSerializer',
}
위에서 생성한 시리얼라이저를 사용하도록 설정해줍니다.
7. 테스트
[서비스 구동]
python manage.py runserver 0.0.0.0:8010
[회원가입]
회원가입시 위와 같이 phone 값에 "01011112222"를 명시하였습니다.
[결과확인]
http://192.168.5.99:8010/admin/accounts/
위와 같이 커스터마이징한 모델이 추가된 것을 확인할 수 있었습니다.
[출처]: stackoverflow.com/questions/41398949/django-related-model-users-userprofile-cannot-be-resolvedstackoverflow.com/questions/53969386/how-to-save-extra-fields-on-registration-using-custom-user-model-in-drf-django
'프로그래밍 > Django' 카테고리의 다른 글
[Django] 11. Ajax를 이용한 파일 업로드 기능 구현 (705) | 2023.09.15 |
---|---|
[Django] 9. 로그인, 로그아웃 API 구현(JWT Token, RestFrameWork) (733) | 2021.01.14 |
[Django] 8. Mariadb / Mysql DB 연동(데이터베이스) (717) | 2020.12.23 |
[Django] 7. 파라미터 전송(정규표현식, URL 페이지 번호) (711) | 2020.12.16 |
[Django] 6. 파라미터 전송(GET, POST) (714) | 2020.12.15 |