Django 모델

Ethan·2024년 1월 3일
0

django

목록 보기
18/28

이전 포스팅에서 views.py 파일에서 포켓몬 별로 이름, 설명, 레벨, 이미지를 불러오는 함수를 작성했다. 본 포스팅에서는 views.py 파일에 직접 작성하지 않고, 데이터를 불러오는 방법을 사용하기 위해, 데이터의 구조를 생성하는 방법을 설명한다.


models.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 파일을 바탕으로 변경된 내용을 실제 데이터베이스 구조에 적용한다.

profile
글로 쓰면 머리 속에 정리가 되...나?

0개의 댓글

관련 채용 정보