from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
age = models.IntegerField(blank=True, null=True)
1. 꼭 알아야 하는 내용!
참고 자료 : (https://whatisthenext.tistory.com/128)
먼저 User 클래스와 AbstractUser 클래스에 대해 간단히 설명하자면,
User 클래스는 Django 에서 제공하는 기본 인증 모델이며
우리가 커스터 마이징 할 수 없는,
주어진 조건이 명확한 고정 클래스라고 할 수 있습니다.
왜 고정 클래스냐 하면, 아래와 같이
모든 필드들의 종류와 크기가 이미 주어졌기 때문입니다!
- username: 사용자 이름을 저장하는 필드.
CharField로 정의되어 있고,
최대 길이(max_length)는 150으로 설정되어 있습니다.
이 필드는 유니크 필드입니다 - first_name: 사용자의 이름(예: 성)을 저장하는 필드입
이 필드는 CharField로 정의되어 있으며, 최대 길이(max_length)는 30입니다. - last_name: 사용자의 성(예: 이름)을 저장하는 필드.
이 필드는 CharField로 정의되어 있으며,
최대 길이(max_length)는 30으로 설정되어 있습니다. - email: 사용자의 이메일 주소를 저장하는 필드.
이 필드는 EmailField로 정의되어 있습니다. - password: 사용자의 비밀번호를 저장하는 필드.
이 필드는 CharField로 정의되어 있으며, 비밀번호는 암호화되어 저장됩니다. - is_staff: "사용자가 관리자 권한을 가지고 있는지 여부"를 저장하는 필드.
이 필드는 BooleanField로 정의되어 있으며, 기본값은 False. - is_active: "사용자 계정이 활성화되어 있는지 여부"를 저장하는 필드.
이 필드는 BooleanField로 정의되어 있으며, 기본값은 True. - date_joined: "사용자가 가입한 날짜"를 저장하는 필드.
이 필드는 DateTimeField로 정의되어 있습니다.
그래서 User 클래스는, 이미 주어진 필드들을 활용하는 것이고
AbstractUser클래스는 이미 주어진 사용자 모델이 아닌
커스터마이징을 통해 필드를 추가하고 싶을 때 사용하는 클래스입니다!
집합으로 설명하자면, user.Model은 복소수 집합이고
AbstractBaseUser은 실수 집합이며
AbstractUser은 유리수 집합이고
User은 정수집합입니다.
User라는 클래스는 이미 세번의 상속을 받은
필드들에 대한 것들이 주어져버린 클래스인 것이죠.
'Library&Framework > Django' 카테고리의 다른 글
파이썬/장고로 결제 시작하기 (Feat. 아임포트) (3) | 2023.11.29 |
---|---|
게시글 댓글을 생성하는 함수에서 왜 인자로 article_id 를 꼭 넣어줘야 할까 ?? (0) | 2023.09.20 |
[django 기초][의문점] views.py에서 언제 as_view를 사용할까? (0) | 2023.04.25 |
[Django심화][2주차필기] 9강, 클래스형뷰, CBV(class based view) (0) | 2023.04.23 |
[Django기초] 직렬화(Serialization), 역직렬화(Deserialization)는 django에서 어디에 적용되었는가?? (0) | 2023.04.22 |