본문 바로가기
airbnb clone coding

[Django] 6_1. Models and Admin: User Model / Room Model

by busybee-busylife 2024. 7. 12.
728x90

1. User Model 업데이트: users > models.py 

1) profile: 이미지 넣기 

avatar = models.ImageField()

터미널에서 Pillow 설치: poetry add Pillow 

 

2) gender 

User 클래스 내부에 GenderChoices 클래스를 만들고

-> gender 변수에서 위 클래스의 초이스 중 하나를 선택하도록 한다 

 

3) language

gender와 같이 한다 

 

4) currency 

gender와 같이 한다 

 

 

2. Admin에 등록: users > admin.py

CustomUserAdmin 클래스의 fieldsets에 추가 

 

 

3. Rooms 애플리케이션 만들기 

1) python manage.py startapp rooms

2) config > settings.py 의 CUSTOM_APPS에 추가 

CUSTOM_APPS = [ 'users.apps.UsersConfig', 'rooms.apps.RoomsConfig', ]

3) rooms > models.py 에서 room 모델 만들기 

 

 

4. Relationship

Many-to-One: [Room1, Room2, Room3] => User1

One-to-Many: User1 => [Room1, Room2, Room3]

Many-to-Many: [Amenity1, Amenity2, Amenity3] => [Room1, Room2, Room3]

 

Room 클래스의 created_at, updated_at은 다른 애플리케이션에서도 반복적으로 사용될 것

-> 별도의 애플리케이션으로 만든다

 

1) python manage.py startapp common

다른 앱들과 공유할 공통 코드를 가지는 common 애플리케이션을 만든다 

 

2) config > settings.py 의 CUSTOM_APPS에 common 앱을 추가

CUSTOM_APPS = [ 'users.apps.UsersConfig', 'rooms.apps.RoomsConfig', 'common.apps.CommonConfig']

 

3) common > models.py 에서 모델 만들기 

👉🏻 여기서 만든 모델은 데이터베이스에 추가하지 않는다 👈🏻

(다른 모델에서 재사용하기 위해 만드는 것)

rooms > models.py 에서 CommonModel을 임포트하고 클래스마다 CommonModel을 상속받도록 수정 

 

 

5. Admin에 등록: rooms > admin.py

list_display, list_filter를 이용하여 어떤 항목을 사용할지 결정

728x90