개발하면서적는글

[django] 에어비앤비 클론코딩 모델 복습 1

옥수수왕자 2022. 10. 1. 00:33

 노마드코더 에어비앤비 클론코딩을 시작했다.

 

오늘은 user 모델 작성 내용을 했다.

 

작성한 모델은 아래와 같다.

 

from django.db import models
from django.contrib.auth.models import AbstractUser


class User(AbstractUser):
  
  class GenderChoices(models.TextChoices):
    MALE = ("male", "Male")
    FEMALE = ("female", "Female")
  
  class LanguageChoices(models.TextChoices):
    KR = ("kr", "Korean")
    EN = ("en", "English")
  
  class CurrencyChoices(models.TextChoices):
    WON = ("won", "Korean Won")
    USD = ("usd", "Dollar")
  
  first_name = models.CharField(max_length=150, editable=False,)
  last_name = models.CharField(max_length=150, editable=False,)
  name = models.CharField(max_length=150, default="",)
  is_host = models.BooleanField(default=False,)
  avatar = models.ImageField(blank=True,)
  gender = models.CharField(max_length=10, choices=GenderChoices.choices,)
  language = models.CharField(max_length=2, choices=LanguageChoices.choices,)
  currency = models.CharField(max_length=5, choices=CurrencyChoices.choices,)

 

1. django 에서 제공하는 AbstractUser 를 상속받아서 추가로 필요한 정보를 작성하는 방식

2. AbstractUser 에서 기본 제공하는 first_name 과 last_name 은 editable = False 로 작성해서 admin 에 노출시키지 않음

3. choices 작성 방법

  • choices 는 models.TextChoices 를 상속 받는 class 를 작성해서 선택지를 만듦.
  • 튜플에 두개 데이터를 담는데 첫번째는 DB 테이블에 입력되는 값이고, 두번째는 선택지에서 보여지는 텍스트임.
  • max_length 는 db에 입력되는 데이터 길이를 맞춰서 입력