반응형
[Project] Django createsuperuser 입력 값 지정
📖 개요
Django admin site를 만드는 중 py manage.py createsuperuser를 통해 어드민 계정을 생성하면 email과 비밀번호만 받아서 어드민 계정을 만들게 되는데 기본 DB의 User모델에는 다른 입력 값들은 빈 공백으로 생성이 되어서 해결 방법이 없을까 찾다가 찾게 되었다.
📚 models.py의 코드
from django.db import models
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
from datetime import datetime
from django.utils.dateformat import DateFormat
today = DateFormat(datetime.now()).format('Y-m-d')
class UserManager(BaseUserManager):
def create_user(self, email, name, nickname, password=None):
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=self.normalize_email(email),
name = name,
nickname = nickname,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, name, nickname, password):
user = self.create_user(
email,
name = name,
nickname = nickname,
password=password,
)
user.profile_img = "default_profile.png"
user.is_admin = True
user.save(using=self._db)
return user
class User(AbstractBaseUser):
email = models.EmailField(
verbose_name='email',
max_length=255,
unique=True,
)
profile_img = models.TextField()
name = models.CharField(max_length=24)
nickname = models.CharField(max_length=24,unique=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name','nickname']
class Meta:
db_table = 'User'
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.is_admin
📚 검색을 통해 알아낸 해결 방법
create_superuser() missing 4 required positional arguments: 'name', 'birthday', 'phone', and 'gender'
have added REQUIRED_FIELDS in extended user model and It works.
''' REQUIRED_FIELDS = ['name', 'birthday', 'phone', 'gender'] '''
번역 :
create_superuser()에 4개의 필수 위치 인수 누락: '이름', '생일', '전화' 및 '성별'
확장 사용자 모델을 추가 REQUIRED_FIELDS 했으며 작동합니다.
''' REQUIRED_FIELDS = ['이름', '생일', '전화번호', '성별'] '''
즉 '' REQUIRED_FIELDS = [ ] ''을 통해서 모델에 추가하고 싶은 필드를 추가할 수 있다.
📚 결과
models.py의 코드를 입력해준 후 py manage.py createsuperuser를 통한 명령어를 통해 아래와 같은 결과 값을 만들어 낼 수 있었다.
반응형
'BackEnd > Django, DRF' 카테고리의 다른 글
[Project] Django allauth를 이용한 소셜 로그인 - Naver (0) | 2023.01.05 |
---|---|
[Project] Django allauth를 이용한 소셜 로그인 - 기본 설정 (0) | 2023.01.05 |
[Project] Django Form (장고 폼) (0) | 2023.01.02 |
[Project] 장고 admin 페이지 css 오류 (0) | 2022.12.30 |
[Project] HTML의 정보를 E-Mail로 전송하기 (0) | 2022.12.27 |