장고 블로그 앱: 모델 만들기 (기본)

소요 시간: 5분

1. 블로그 앱 모델이란?

Django의 모델(Model)은 데이터베이스와 소통하며 데이터를 관리하고 구조를 정의하는 핵심 요소이다. 블로그 앱에서 모델은 게시글 같은 데이터 구조를 정의하고 데이터베이스 테이블과 매핑한다. 이를 통해 데이터를 저장, 수정, 삭제, 조회할 수 있다.

모델을 사용하면 데이터베이스와의 상호작용이 간단해진다. Django의 ORM(Object-Relational Mapping)을 활용해 쿼리를 직접 작성하지 않고도 데이터를 효율적으로 조작할 수 있다. 유지보수가 쉽고, 데이터 무결성을 보장하며 복잡한 작업도 간소화된다.


2. 기본 블로그 게시글 모델 예제

블로그 게시글을 정의하는 간단한 Django 모델 예제는 다음과 같다:

# models.py
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)  # 제목
    content = models.TextField()  # 게시글 내용
    published_at = models.DateTimeField()  # 게시글 발행 일시
    is_public = models.BooleanField(default=True)  # 공개 여부

    def __str__(self):
        return self.title

필드 설명

데이터 관리의 유연성

이 모델을 통해 Django의 ORM으로 게시글을 쉽게 조작할 수 있다. 예를 들어, Article.objects.create(title="제목", content="내용")을 통해 새로운 게시글을 간단히 생성할 수 있다.


3. 기본 모델 메서드 예제

모델은 데이터 구조 정의뿐 아니라 특정 기능을 수행하는 메서드도 정의할 수 있다.

최근 게시글 확인 메서드 예제

게시글이 최근 7일 이내에 발행되었는지 확인하는 메서드는 다음과 같다.

from datetime import timedelta, datetime

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    published_at = models.DateTimeField()
    is_public = models.BooleanField(default=True)

    def is_recent(self):
        """게시글이 최근 7일 이내에 발행되었는지 확인."""
        return self.published_at >= datetime.now() - timedelta(days=7)

published_at 값을 현재 시간에서 7일을 뺀 값과 비교하여, 게시글이 최근에 작성되었는지 판단한다. 조건을 충족하면 True, 그렇지 않으면 False를 반환한다.

활용 예시

article = Article.objects.get(id=1)
if article.is_recent():
    print(f"{article.title}은 최근에 작성된 게시글이다.")
else:
    print(f"{article.title}은 오래된 게시글이다.")


결론

Django 모델은 데이터베이스와의 상호작용을 단순화하고 관리하는 강력한 도구이다. 모델 필드로 데이터 구조를 정의하고, 모델 메서드로 데이터 관련 로직을 처리할 수 있다. 이를 통해 복잡한 데이터 중심 애플리케이션도 효율적으로 구축할 수 있다.


이어지는 글

장고 리스트