User모델 확장
- username을 None으로 설정하고 이메일을 고유한 식별자로 사용
- **USERNAME_FIELD**를 이메일로 설정하여 사용자 인증 시에 이메일을 사용
- 닉네임과 프로필 사진을 유저 모델에서 관리하려고 함
소스코드
# accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
username = None
email = models.EmailField(unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
nickname = models.CharField(max_length=8, default='')
profile_pic = models.ImageField(blank=True, null=True)
- 참고로 User모델 확장을 위해 AbstractUser 클래스를 상속해야함.
# settings.py
AUTH_USER_MODEL = 'accounts.User'
accounts 앱에서 만든 User모델을 통해 auth기능을 사용하기 위해 settings.py에 추가
마이그레이션 명령어를 입력하자 에러가 발생했다.
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency accounts.0001_initial on database 'default'.
해결방안
- 확장 도중 에러가 발생해 여러가지 해결 방법을 시도 해 보았지만 해결되지 않아 모든 migrations 파일을 삭제한다(init.py 제외), db.sqlite3 을 삭제 를 진행하였다.
댓글