Django

django admin 커스터마이징 시 유의점

zhelddustmq 2024. 10. 1. 09:52

장고 admin을 상속받아서 쓸 때마다, 거슬리는 First name, Last name.

이 녀석들을 처리하기 위해,

AbstractUser 대신 AbstractBaseUser라는 클래스를 상속받을 시에는 기존 (is_superuser, is_staff, is_active같은)특정 필드와 PermissionsMixin클래스 상속이 있어야 관리자 페이지에 접근 할 수 있음.

class User(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(max_length=50, unique=True)
    name = models.CharField(max_length=20)
    is_superuser = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    email = models.EmailField(max_length=254, unique=True)
    address = models.CharField(max_length=254)
    date_joined = models.DateTimeField(auto_now_add=True)

    # 고유 식별자로 사용되는 user모델의 필드 이름
    USERNAME_FIELD = "username"
    # 필수로 입력받고 싶은 값으로 createsuperuser시 사용
    REQUIRED_FIELDS = ["name", "email"]

    objects = CustomUserManager()

    def __str__(self):
        return self.username

    def soft_delete(self):
        self.is_active = False
        self.save()

    # 로그인 해싱 커스터마이징을 위한 check_password 오버라이딩
    def check_password(self, raw_password):
        return bcrypt.checkpw(raw_password.encode('utf-8'), self.password.encode('utf-8'))

'Django' 카테고리의 다른 글

장고 서버 배포 간단 요약  (0) 2024.10.04
장고 커서 페이지네이션  (0) 2024.10.02
Django MTM field 단점  (0) 2024.09.23
Django permissoin_classes (GET, POST 나누기)  (0) 2024.09.05
Django 서버 배포하기  (4) 2024.09.03