1) Accounts App
1-1. OverView
- 프로필 추가
- User 모델을 최대한 덜 건드리는 방법
- 1:1 relation
- Customize User Model
- 1:1 relation
- 1:N relation의 차이
- OneToOneField
- 새 프로필의 정보를 받는 기능 작성
- 기존의 데이터를 호환시키기
- 프로필 사진 관리하기
2) 프로필 추가
프로필 사진이나, 닉네임같은 특별한 정보를 추가하고 싶은데..
User 모델을 직접적으로 건드리는건 조금 위험하기 때문에 다른 방법을 생각하는게 좋습니다.
2-1. 1:1 relation
이럴 때 할 수 있는게 1:1 relation입니다.
실질적으로 1:1 relation은 컬럼을 추가하는것과 다를 바가 없으나, 모델 클래스를 직접적으로 건드리는게 힘들 때 주로 사용합니다.
또 다른 장점을 생각해보자면, 기존의 User 모델에서 빈 column을 업데이트하지 않아도 되기 때문에 비용적인 측면에서도 장점이 있을 수 있습니다.
1:1 relation은 Django에서 OneToOneField로 구현할 수 있습니다.
from django.db import models
class Profile(models.Model):
user = models.OneToOneField(to=get_user_model(), on_delete=model.CASCADE)
image = models.ImageField(blank=True)
description = models.CharField(blank=True, max_length=100)
nickname = models.CharField(blank=True, max_length=30)
# 그외 추가하고싶은 컬럼들...
사용하는 방법은 ForeignKey와 동일합니다.
다만, 기본 프로필 이미지가 있을 수도 있고 없을 수도 있기 때문에 blank=True 옵션은 필요합니다.
2-2. 몇가지 필요한 조정
- 새 유저가 생성되었을 때는 프로필 데이터베이스를 채우기 위해서