노마드 코더 Airbnb 클론 코딩

노마드 코더 에어비앤비 클론코딩 #6 Models and Admin

gogi masidda 2022. 10. 17. 16:51

Models

 

 'models.ImageField'를 사용하려면 터미널에 'poetry add pillow'를 해주어야 한다. 

선택지 만들어 사용하기

#선택지 만들기
class GenderChoices(models.TextChoices):
	MALE = ("male","Male") #(데이터 베이스에 들어갈 값, 관리자 페이지에서 보게될 label)
    FEMALE = ("female","Female")
  
gender = models.CharField(max_length=10,choices=GendrChoices.choices) #max_length는 선택지보다 길게,choices=클래스명.choices

 

ManytoManyField: N:M, M:N -> 여러 개의 Amenity들이 여러 Room에 들어갈 수 있는 것처럼 다대다의 관계

1:N의 관계에서는 ForeignKey를 사용하고, N:M의 관계에서는 ManytoMany를 사용한다.

 

다른 App들과 재사용할 코드

common이라는 App을 만들고 다른 App들의 model을 만들 때 처럼 만든다.

class Meta:
	abstract = True #데이터베이스에 common 모델을 저장하지 않겠다. 실제 데이터로 사용하지 않겠다.

이 코드를 아래에 사용해준다.

from common.models import CommonModel

class Room(CommonModel): #CommonModel을 models.Model 대신 상속

이렇게 사용해준다.

 

Admin패널에 적힌 오타 고치기

 

#오타가 난 class 안에

class Meta:
	verbose_name_plural = "정정"

오타
정정

 

SET_NULL

 

category = models.ForeignKey("categories.Category",on_delete=SET_NULL)

이 코드에서, 'on_delete=SET_NULL'로 인해 category가 삭제되면 남아있는 room이나 experience의 category는 null로 남게된다.

 

verbose_name: Admin 패널에서 보이는 App이름을 바꾸고 싶으면 apps.py에 verbose_name= " "을 사용한다. 

 

 

728x90