본문 바로가기
airbnb clone coding

[Django] 4_1. Django Apps: Models + Migrations

by busybee-busylife 2024. 7. 11.
반응형

Houses 앱을 만들어보자

python manage.py startapp houses

houses 라는 이름의 application(폴더)를 생성 

 

houses 폴더가 저절로 만들어졌다. 

 

 

houses 폴더 내 models.py에서 모델을 만든다 

DB는 SQL언어라(파이썬X) 코드 모양이 저런식이다 

 

 

하지만 django는 아직 houses의 존재를 알지 못한다 

config > settings.py > INSTALLED_APPS 에서 houses 정보를 추가한다 

 

 

 

django는 우리 custom data에 대한 관리 패널(admin panel)을 자동으로 생성해준다

houses의 admin.py에서 House 모델을 admin에 등록한다

 

짜잔! Houses 패널이 생겼다 

 

 

하지만 아직 우리의 데이터베이스는 House모델에 대해 모르는 상황 

데이터베이스의 형태를 수정하여 데이터베이스에게 House 모델에 대해 알려줘야한다 

어떻게? migration!

 

python manage.py makemigrations

houses 폴더 내 migrations 폴더를 생성 

 

 

python manage.py migrate

migration: 파이썬 코드의 모델 구조와 데이터베이스의 구조를 동기화하기 위함

모델을 수정할때마다 데이터베이스에 그 변경사항을 알려줘야한다(makemigrations -> migrate)

 

House 모델에서 만든 내용들(name, price, description, address)이 반영되었다 

 

House 모델을 만들고 django 데이터베이스를 업데이트했을 뿐인데 House 관리 패널이 생성되었다

 

내가 만든 application들은 CUSTOM_APPS에 따로 모은다

django는 INSTALLED_APPS를 찾으려고 하기 때문에 위처럼 INSTALLED_APPS를 지정해주어야한다 

 

 

✍️ 전체 흐름 ✍️

1. houses라는 application을 만든다(python manage.py startapp houses)

2. setting.py에서 설치된 application을 추가한다(CUSTOM_APPS를 따로 만들어 INSTALLED_APPS에 속하도록 지정)

3. models.py에서 application과 데이터를 정의한다

4. admin.py에서 위에서 만든 모델을 등록하면 해당 모델의 admin 패널이 생성된다 

5. migration을 생성하여 데이터베이스와 내가 만든 models.py 파일을 연동한다 

   (python manage.py makemigrations)

   (python manage.py migrate)

 

반응형

'airbnb clone coding' 카테고리의 다른 글

[Django] 5_1. Users App: Customize  (0) 2024.07.11
[Django] 4_2. Django Apps: Admin + Documentation  (0) 2024.07.11
[Django] 3. Django Basics  (0) 2024.07.10
[Django] 2. OOP with Python  (0) 2024.07.10
[Django] 1. Intro: set up  (0) 2024.07.09