이전 포스팅에서 views.py
파일에서 포켓몬 별로 이름, 설명, 레벨, 이미지를 불러오는 함수를 작성했다. 본 포스팅에서는 views.py
파일에 직접 작성하지 않고, 데이터를 불러오는 방법을 사용하기 위해, 데이터의 구조
를 생성하는 방법을 설명한다.
pokemon-book
디렉토리 내의models.py
파일로 이동한다.
📂poketmon
📄manage.py
📄db.sqlite3
📂pokemon
📄__init__.py
📄settings.py
📄urls.py
📄wsgi.py
📂pokemon-book
📂static
📂templates
📂pokemon-book
📄pokemon-list.html
📄detail-pikachu.html
📄detail-charmander.html
📄detail-squirtturtle.html
📂migrations
📄__init__.py
📄admin.py
📄apps.py
📄models.py 📌
📄tests.py
📄views.py
📄urls.py
모든 모델은
class
로 구성된다. Poke 라는 이름의 클래스를 생성한다.
from django.db import models
class Poke(models.Model): 📌
Poke 클래스의 포켓몬 이름
필드
를 추가한다. 포켓몬 이름은문자열
이기 때문에ChaField
를 이용한다.
from django.db import models
class Poke(models.Model):
name = models.CharField(max_length=30) 📌
models의 ChaField는 저장할 최대 값을 max_length={}를 입력해 인자로 정해줘야 한다.
포켓몬 설명도 ChaField로 추가하고, 최대 길이를 200으로 지정한다.
from django.db import models
class Poke(models.Model):
name = models.CharField(max_length=30)
description = models.ChaField(max_length=200) 📌
레벨은
숫자
기 때문에,IntegerField
를 추가한다.
from django.db import models
class Poke(models.Model):
name = models.CharField(max_length=30)
description = models.ChaField(max_length=200)
level = models.IntegerField() 📌
마지막으로 이미지 경로를
ChaField
로 추가한다. 최대 길이는 255로 적용한다.
from django.db import models
class Poke(models.Model):
name = models.CharField(max_length=30)
description = models.ChaField(max_length=200)
level = models.IntegerField()
img_path = models.ChaField(max_length=255) 📌
필드 정의가 끝났으면 함수를 하나 지정한다.
from django.db import models
class Poke(models.Model):
name = models.CharField(max_length=30)
description = models.ChaField(max_length=200)
level = models.IntegerField()
def __str__(self): 📌
return self.name
작성된
던더 str
함수는 모델의 인스턴스를 문자열로 반환하는 함수다. 즉, 우리가 출력된 결과에서 인스턴스를 쉽게 식별할 수 있는 결과를 제공한다. 위 코드에서는 name값을 리턴해 피카츄, 파이리, 꼬부기로 인스턴스를 식별한다.
( 던더 = 더블 언더 스코어 = __ )
모델 작성이 끝났다. 모델을 새로 작성하거나 변경하면
장고
에모델 변경
을 알려줘야 한다. 터미널에서프로젝트 루트 디렉토리
로 이동한 뒤 아래의 명령어를 입력한다.
python manage.py makemigrations
python manage.py migrate
makemigrations
명령어는 모델의 변경사항 (생성,수정,삭제 등)을 반영한 새로운migration 파일을 생성
한다.
migrate
명령어는 migration 파일을 바탕으로 변경된 내용을실제 데이터베이스 구조에 적용
한다.