일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바
- 남양주맛집
- 강원도속초맛집
- python3
- 가상환경
- Python
- FLUTTER
- 노마드코더
- richtext
- 알고리즘
- popupmenubutton
- 장고
- 컴퓨터과학
- 아스키코드
- 코딩독학
- BeautifulSoup
- Django
- DOM
- 성수동카페
- pipenv
- 부스트코스
- removetooltip
- JavaScript
- 상속
- 추상클래스
- 건대입구맛집
- 포인터
- c언어문자열
- 속초여행
- 정렬알고리즘
- Today
- Total
YUYANE
Django / models.py 본문
학습강의
nomadcoders.co/airbnb-clone/lectures/858
Django-admin을 통해 앱을 생성하면 아래와 같은 폴더가 자동으로 생성된다. 오늘은 models 파일에 대해 알아보자!
models.py ?
데이터를 정의하고, 데이터 구조가 어떻게 생겼는 지를 코드로 작성하여 저장하는 곳
우리가 저장할 데이터 구조를 models.py에 작성하면, 장고가 그 코드를 읽어 구조에 맞게 데이터를 생성한다.
* 주의 : 우리는 장고라는 프레임워크를 사용하고 있는 것이므로 함부로 파일명을 바꾸면 안된다!
파일 구조는 아래와 같이 생겼다.
from django.db import models
class HouseRule(AbstractItem):
""" HouseRule Model Definition """
class Meta:
verbose_name_plural = "House Rules"
class Photo(models.Model):
""" Photo Model Definition """
caption = models.CharField(max_length=80)
file = models.ImageField()
room = models.ForeignKey(
"Room", related_name="photos", on_delete=models.CASCADE)
def __str__(self):
return self.caption
* 모델의 각 속성은 데이터베이스의 필드(caption, file, room)를 나타내며, 각각 데이터베이스 열(column)에 매핑된다.
* 모델 클래스를 작성하면 장고는 사용자에게 자동으로 생성되는 데이터베이스 접근 API를 제공한다.
models.py 사용하기
해당 파일에 데이터 및 데이터 구조를 정의했다면 장고에게 정의했다고 알려야 한다.
models.py를 가지고 있는 앱을 프로젝트를 시작하면 자동으로 생성 되는 config 폴더 - settings.file에 추가해야 한다.
예를 들어, 위의 models.py는 rooms 이라는 앱에 속하는 파일이다. 해당 rooms 앱/폴더의 apps.py을 열어 클래스 명을 확인하자.
클래스 명(RoomsConfig)을 확인했다면, 이것을 config 폴더의 settings.file 에 추가하자.
settings.file을 열어 커서를 내리다보면 INSTALLED_APPS 이 있을 것이다. 여기에 클래스명을 위와 같이 추가하면 된다. 마지막으로 migration 작업 까지 하면 완료!
* 참고로 models.py에서 새롭게 생성, 수정, 삭제 된 데이터가 있어도 migration이 필요하다.
참고
docs.djangoproject.com/en/3.1/topics/db/models/
'Framework > DJANGO' 카테고리의 다른 글
Django / Model Field (0) | 2021.02.23 |
---|---|
Django / migrations을 하는 이유 (0) | 2021.02.20 |
Django / pipenv로 가상환경 구축하기(Ubuntu, python3) (0) | 2021.02.15 |
Django / WSL(ubuntu)로 pip, pipenv 설치하기 (python3) (0) | 2021.02.15 |
Django / 자유롭게 arguments 부여하기 (*args, *kwargs) (0) | 2021.02.02 |