장고 모델

소요 시간: 5분

장고 모델은 데이터베이스 테이블을 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__ 메서드는 객체를 출력할 때 제목이 보이게 한다.

모델 필드 타입

예시 모델


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. 장고 모델의 장점

장고 모델은 데이터베이스와의 모든 상호작용을 간단하게 만든다.

SQL을 몰라도 객체지향적으로 데이터를 관리할 수 있어 개발자가 훨씬 더 효율적으로 작업할 수 있다.

장고 리스트