장고 모델
장고 모델은 데이터베이스 테이블을 Python 클래스 형태로 정의하는 방법이다. 데이터베이스와의 상호작용을 쉽고 직관적으로 처리할 수 있게 해준다.
또한 장고의 ORM(Object-Relational Mapping)을 사용하면 SQL 없이 객체로 데이터를 다룰 수 있다.
1. 장고 모델의 정의
장고 모델은 애플리케이션에서 데이터 구조를 정의하는 클래스다. models.Model을 상속받아 테이블과 연결되며, 필드와 메서드를 정의할 수 있다. 모델 클래스를 작성하면 데이터베이스 테이블이 자동으로 생성된다.
2. 모델 사용법
모델 정의 예시
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
published_date = models.DateField()
price = models.DecimalField(max_digits=5, decimal_places=2)
def __str__(self):
return self.title
위 코드에서 Book 모델은 책을 나타낸다. 각 필드는 데이터베이스 테이블의 컬럼과 매핑된다. __str__ 메서드는 객체를 출력할 때 제목이 보이게 한다.
모델 필드 타입
- CharField(max_length=n): 문자열 필드. 최대 길이를 지정한다.
- IntegerField(): 정수 필드.
- DateField(): 날짜 필드.
- BooleanField(): 불리언 필드.
예시 모델
3. 모델 사용 예시
1) 마이그레이션
모델을 작성하고 나면 데이터베이스에 반영하기 위해 마이그레이션을 실행한다.
python manage.py makemigrations
python manage.py migrate
첫 번째 명령어는 마이그레이션 파일을 생성하고, 두 번째는 이를 실제 데이터베이스에 반영한다.
2) 모델 인스턴스 생성 및 저장
book = Book(title="Django Basics", author="John Doe", published_date="2023-01-01", price=19.99)
book.save()
모델 인스턴스를 생성하고 save() 메서드를 호출하면 데이터베이스에 저장된다.
3) 데이터 조회
# 모든 책 조회
books = Book.objects.all()
# 저자가 'John Doe'인 책만 필터링
books_by_john = Book.objects.filter(author="John Doe")
# 특정 책 한 권 조회
book = Book.objects.get(id=1)
장고 ORM을 사용하면 SQL 없이 데이터를 쉽게 조회할 수 있다.
4. 장고 모델의 장점
- 직관적이고 간편한 ORM: SQL 없이 데이터베이스 작업을 할 수 있다.
- 유지보수 용이: 코드로 모델을 관리하므로 데이터 구조 변경이 쉽고 추적도 간편하다.
장고 모델은 데이터베이스와의 모든 상호작용을 간단하게 만든다.
SQL을 몰라도 객체지향적으로 데이터를 관리할 수 있어 개발자가 훨씬 더 효율적으로 작업할 수 있다.