#4.1 Migrations
우리가 파이썬 코드로 줘도, 장고는 데이터베이스를 위해 SQL코드로 번역해서 인식함
장고는 커스텀 데이터에 대한 관리 패널을 자동으로 생성해줌
admin.py에서 house model import해줌
from .models import House
그리고 또 다른 class를 만든다
from django.contrib import admin
from .models import House
@admin.register(House) # 이 밑의 class가 House 모델을 통제함
class HouseAdmin(admin.ModelAdmin): # 1) HouseAdmin이라는 class를 만들고, 2) ModelAdmin으로부터 모든걸 상속받음
pass #ModelAdmin에서 아무것도 수정하지 않으므로 pass,
이거하고 서버 새로고침하면~~
admin 패널 houses를 얻는다
근데 들어가면~
요따구로 에러 존재
models안에 class를 생성했지만, 데이터베이스는 이 class에 대해 모르는 상태이기 때문임
그래서 두번째 터미널에 python manage.py makemigrations 입력하면
장고가 houses/migrations 라는 폴더 내부에 파일을 만듦
이 migrations를 적용시키면 데이터베이스 된다
다시 한번 두번째 터미널 콘솔창에
python manage.py migrate입력
→ 데이터베이스 모양 업데이트
!!!앞으로도 models에서 뭔가 수정하면 위와 같은 방식으로 데이터베이스에게 알려줘야함(makemigration,migrate)
짜라좐~ 이런식으로 생김
#4.2 Recap
- settings에서 custom_apps를 추가해서 housesconfig추가, system_apps추가해서 기존 installed_Apps랑 똑같이하고
- Installed_apps = system_apps + custom_apps로 두기
- 우리가 models에 정의해서 좋은 점
- 장고가 데이터베이스와 소통해줌(데이터 형태를 데이터베이스에 설명해줌(SQL))
- admin.py가서 model을 등록 시키기만 해도 admin패널을 통째로 만들어줌
- 우리가 models에서 price의 이름을 price_per_night으로 바꾸고 다시 makemigration을 하면 자동으로 이름바꿀거냐고 물어봄 , y라고 하면 migration안에 002라는 새로운 파일 생성함
- 이런식으로 어떻게 바꿨는지도 보임
- 그리고 다시 migrate
#4.3 Admin
- 이렇게 보이는게 뻐킹이래
- house class의 string method형태를 설정하면 돼
- models.py로 가서 class안에
def __str__(self):
return self.name
추가해주면
바로 이렇게 보임!
- 정렬기능
- 그럼이제 house admin 패널에도 column을 구현해보자!
- column별로 정렬도 가능
- admin 에서 list_display 추가해주면돼
from django.contrib import admin
from .models import House
@admin.register(House) # 이 밑의 class가 House 모델을 통제함
class HouseAdmin(admin.ModelAdmin): # 1) HouseAdmin이라는 class를 만들고, 2) ModelAdmin으로부터 모든걸 상속받음
list_display = [
"name",
"price_per_night",
"address",
"pets_allowed"
]
- 하고 다시 makemigrations, migrate해줘
- 그럼 column별로 정렬 기능 생겼다!!!
- 필터링 기능
- 근데 여기서 필터링 기능을 추가 하고 싶음
from django.contrib import admin
from .models import House
@admin.register(House) # 이 밑의 class가 House 모델을 통제함
class HouseAdmin(admin.ModelAdmin): # 1) HouseAdmin이라는 class를 만들고, 2) ModelAdmin으로부터 모든걸 상속받음
list_display = [
"name",
"price_per_night",
"address",
"pets_allowed"
]
list_filter = [
"price_per_night",
"pets_allowed"
]
- admin.py에 list_filter추가하면 돼
- 검색 기능
from django.contrib import admin
from .models import House
@admin.register(House) # 이 밑의 class가 House 모델을 통제함
class HouseAdmin(admin.ModelAdmin): # 1) HouseAdmin이라는 class를 만들고, 2) ModelAdmin으로부터 모든걸 상속받음
list_display = [
"name",
"price_per_night",
"address",
"pets_allowed"
]
list_filter = [
"price_per_night",
"pets_allowed"
]
search_fields = ["address"]
- admin에 search_fields 추가
- “address__startswith”과 같이 작성해서 추가적인 조건도 설정 가능
- 에러 메세지 기능
- admin안에서 잘못 입력하면 빨간 메세지로 터미널에 에러 뜸 이거 읽으면 힌트 있으니까 해결 가능
- 부가 적으로 장고는 list잘 안 쓰고 tuple 씀
- 근데 tuple안에 원소가 하나면 vscode에서 string으로 인식하기 때문에
- 이런 식으로 뒤에 콤마 붙이기
#4.4 Documentation
- 장고 공식 도움말이 엄청 유용함
'Backend > Django' 카테고리의 다른 글
[백엔드][장고][Django] Chapter #6 (0) | 2023.07.15 |
---|---|
[백엔드][장고][Django] Chapter #5 (0) | 2023.07.13 |
[백엔드][장고][Django] Chapter #3 (0) | 2023.07.13 |
[백엔드][장고][Django] Chapter #2 (0) | 2023.07.13 |
[백엔드][장고][Django] Chapter #1 (0) | 2023.07.13 |
Uploaded by Notion2Tistory v1.1.0