My Profile Photo

DongChanS's blog


수학과 학생의 개발일지


인스타 클론코딩 6, Accounts 앱 (2) - 프로필 추가 (작성예정)

1) Accounts App

1-1. OverView

  1. 프로필 추가
    • User 모델을 최대한 덜 건드리는 방법
    • 1:1 relation
    • Customize User Model
  2. 1:1 relation
    • 1:N relation의 차이
    • OneToOneField
  3. 새 프로필의 정보를 받는 기능 작성
    • 기존의 데이터를 호환시키기
  4. 프로필 사진 관리하기

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. 몇가지 필요한 조정

  1. 새 유저가 생성되었을 때는 프로필 데이터베이스를 채우기 위해서
comments powered by Disqus