-
[Django] app 생성하고 model 설정하기, 옵션 추가하기파이썬/Django 2022. 12. 29. 09:10728x90반응형
사용자 유저 프로필 기능 추가하기
📁 users/models.py
from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class User(AbstractUser): # gender 컬럼에 옵션으로 넣어 줄 클래스 class GenderChoices(models.TextChoices): # 첫번째 값은 데이터베이스에 들어갈 value, 두번째 값은 관리자 페이지에 들어갈 label MALE = ("male", "Male") FEMALE = ("female", "Female") class LanguageChoices(models.TextChoices): KR = ("kr", "Korea") EN = ("en", "English") class CurrencyChoices(models.TextChoices): WON = "won", "Korean Won" USD = "usd", "Dollar" # 성과 이름으로 분류하는 것은 서구적인 정보 입력 방식이기 때문에 관리자 페이지에서 보이지 않도록 설정한다. editable=False first_name = models.CharField(max_length=150, editable=False) last_name = models.CharField(max_length=150, editable=False) # 사용자 프로필사진 -> ImageField()를 쓰려면 Pillow 가 설치되어 있어야 함 # blank=True: 필드가 필수사항이 아니게 설정 avatar = models.ImageField(blank=True) # 이름 입력창 name = models.CharField(max_length=150, default="") # 유저가 호스트일 경우 is_host = models.BooleanField(null=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,)
컬럼에 옵션 추가하기
gender = models.CharField(max_length=10, choices=GenderChoices.choices,)
사용자 성별을 고를때 남/여를 보기로 주려면 choices 옵션에 옵션클래스를 만들어서 설정해준다.
옵션클래스는 아래와 같이 생성하되 같은 User클래스 내부에 생성해야 한다.
class GenderChoices(models.TextChoices): # 첫번째 값은 데이터베이스에 들어갈 value, 두번째 값은 관리자 페이지에 들어갈 label MALE = ("male", "Male") FEMALE = ("female", "Female")
- 변수는 대문자로 작성
- 첫번째 값 : 데이터베이스에 들어갈 value
- 두번째 값 : 관리자 페이지에 들어갈 label
숙소 model 추가하기
숙소 정보와 어메니티 정보를 만들어준다.
📁 rooms/models.py
from django.db import models class Room(models.Model): """Room Model Definition""" class RoomKindChoices(models.TextChoices): ENTIRE_PLACE = ("entire_place", "Entire Place") PRIVATE_ROOM = ("private_room", "Private Room") SHARED_ROOM = ("shared_room", "Shared Room") country = models.CharField(max_length=50, default="한국") city = models.CharField(max_length=80, default="서울") price = models.PositiveIntegerField() rooms = models.PositiveIntegerField() toilets = models.PositiveIntegerField() description = models.TextField() address = models.CharField(max_length=250,) pet_friendly = models.BooleanField(default=True) kind = models.CharField(max_length=20, choices=RoomKindChoices,) owner = models.ForeignKey("users.User", on_delete=models.CASCADE) class Amenity(models.Manager): """ Amenity Definition """ name = models.CharField(max_length=150,) description = models.CharField(max_length=150, null=True,)
LIST'파이썬 > Django' 카테고리의 다른 글
[Django] 관계(Relationship) 설정하기 many to many, one to may, many to one (0) 2022.12.31 [Django] common app으로 공통코드 관리하기 (0) 2022.12.30 [Django] 모델 간 데이터 연결하는 방법, 외래키(FK) 사용하기 (0) 2022.12.27 [Django] 어드민 페이지 커스텀하기 (0) 2022.12.27 [Django] app에 컬럼 추가하기 (0) 2022.12.27