개발하면서적는글
[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에 입력되는 데이터 길이를 맞춰서 입력