안녕하세요
이번 시간에는 Django에서 Model에 대한 개념을 알아보고 Models.py로 모델을 만드는 실습을 진행하겠습니다.
1. Django에서 Model이란?
Django에서 모델(Model)은 데이터베이스 테이블과 연관되는 파이썬 클래스입니다. 모델을 사용하여 데이터베이스 테이블의 스키마를 정의하고, 데이터베이스와 상호작용할 수 있는 인터페이스를 제공합니다.
(1) 모델은 파이썬 클래스이므로, 클래스 변수를 사용하여 필드(Field)를 정의할 수 있습니다. 필드는 데이터베이스 테이블의 컬럼과 매핑되며, 각 필드의 데이터 타입은 Django에서 제공하는 다양한 타입 중 하나를 선택하여 정의할 수 있습니다.
(2) 데이터베이스에 새로운 레코드를 추가하려면 모델 클래스의 인스턴스를 생성하고, 필드에 값을 할당한 후 save() 메서드를 호출하여 저장합니다. 데이터베이스에서 레코드를 가져오려면, 모델 클래스의 manager를 사용하여 쿼리를 수행합니다.
(3) Django의 모델은 데이터베이스와 밀접하게 연관되어 있으므로, 데이터베이스 스키마의 변경 사항을 반영하기 위해서는 migration 작업이 필요합니다. Migration은 모델의 변경사항을 데이터베이스에 반영하는 과정을 말하며, Django는 이를 쉽게 수행할 수 있도록 지원합니다.
2. Django에서 Model 생성하기
1. Django 프로젝트 내에서 앱을 생성하기
python manage.py startapp [앱이름]
2. 생성한 앱 내의 'models.py' 파일에 모델 클래스를 작성하기
django.db.models.Model
모델 클래스는 `django.db.models.Model`을 상속받아야 합니다.
3. 모델 클래스 내에 필드를 정의하기
# blog/models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
필드는 데이터베이스 내에서 각각의 열(Column)을 말하며, 예를 들어 [CharField]는 문자열 필드, [IntegerField]는 정수형 필드를 나타냅니다.
4. 모델 클래스에서 관계 설정하기
ForeignKey, OneToOneField, ManyToManyField 등을 이용해 정의할 수 있습니다.
5. 모델 클래스를 Django의 ORM을 통해 데이터베이스에 반영하기
python manage.py makemigrations
이 명령어는 앱 내의 `migrations` 폴더에 마이그레이션 파일을 생성합니다.
6. 생성된 마이그레이션 파일을 데이터베이스에 적용하기
python manage.py migrate
다음 명령어로 마이그레이션 파일을 데이터베이스에 적용합니다.
위 코드에서는 Post 모델 클래스를 정의하고, title, content, created_at 필드를 정의하였습니다. created_at 필드는 auto_now_add=True로 지정하여, 해당 모델 객체가 생성될 때의 시간이 자동으로 기록되도록 설정하였습니다. 이후 makemigrations와 migrate 명령을 실행하면, Post 모델이 데이터베이스에 반영됩니다.
모델을 만들고 데이터베이스에 반영했습니다.
감사합니다.
'Framework > Django' 카테고리의 다른 글
[Django] 웹 프레임워크 Django의 동작원리와 라우팅에 대해 알아보기 (0) | 2021.01.30 |
---|---|
[Django] Django 관리자 기능에 대해 알아보고 관리자 페이지 실습하기 (0) | 2021.01.30 |
[Django] Django에서 템플릿 확장의 개념과 템플릿 확장 적용하는 방법 실습하기 (0) | 2021.01.30 |
[Django] Settings 파일 기본 설정에 대해 알아보고 Migration 및 서버 실행하기 (0) | 2021.01.30 |
[Django] Django 설치하고 프로젝트 시작하기 (0) | 2021.01.30 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!