본문 바로가기
Development Frameworks/Django

[Django] 장고 마스터하기 (Django Tutorial) - Django 데이터베이스 모델과 ORM [8/11]

by 데이터 벌집 2024. 10. 7.
반응형

이전 포스팅에서는 Django의 HTML 템플릿 시스템을 사용하여 동적인 웹 페이지를 생성하는 방법을 배웠습니다. 이번 포스팅에서는 Django의 데이터베이스 모델과 ORM(Object-Relational Mapping)에 대해 알아보겠습니다. Django의 ORM은 데이터베이스와 상호작용할 수 있도록 설계된 도구로, SQL을 직접 작성하지 않고도 데이터를 처리할 수 있습니다. 이번 글에서는 Django에서 데이터베이스 모델을 정의하고 ORM을 사용해 데이터를 처리하는 방법을 설명하겠습니다.

 

[Django] 장고 마스터하기 (Django Tutorial) - Django 데이터베이스 모델과 ORM [8/11]

 

1. Django 모델이란?

Django에서 모델은 데이터베이스 테이블을 정의하는 클래스입니다. 모델은 테이블의 열(column)에 해당하는 필드들을 정의하며, 이 모델을 통해 데이터를 생성, 수정, 삭제, 조회할 수 있습니다. Django의 ORM을 통해 SQL 없이 Python 코드로 데이터베이스와 상호작용할 수 있습니다.

 

2. 모델 정의하기

Django에서 모델을 정의하려면 애플리케이션의 models.py 파일에서 모델 클래스를 작성합니다. 예를 들어, 블로그 애플리케이션에서 게시글(Post) 모델을 정의할 수 있습니다.

 

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)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

 

2.1 모델 필드 설명

  • title: 게시글의 제목을 나타내며, 최대 200자의 문자열을 저장할 수 있는 CharField입니다.
  • content: 게시글의 본문을 저장하는 TextField입니다. 길이에 제한이 없는 텍스트 데이터를 저장합니다.
  • created_at: 게시글이 생성된 날짜와 시간을 저장하는 DateTimeField로, 객체가 처음 저장될 때 자동으로 설정됩니다.
  • updated_at: 게시글이 수정된 날짜와 시간을 저장하는 DateTimeField로, 객체가 저장될 때마다 자동으로 업데이트됩니다.

2.2 __str__ 메서드

__str__ 메서드는 객체가 문자열로 표현될 때 어떻게 표시될지를 정의합니다. 예를 들어, 이 메서드에서 게시글의 제목을 반환하도록 설정하면 관리자 페이지나 쉘에서 객체가 출력될 때 제목이 나타납니다.

 

3. ORM을 사용한 데이터 처리

모델을 정의한 후, Django ORM을 사용하여 데이터를 처리할 수 있습니다. 데이터베이스에 데이터를 추가하고, 조회하고, 수정하고, 삭제하는 방법을 살펴보겠습니다.

 

3.1 데이터 생성

 

ORM을 통해 새로운 데이터를 생성하려면 모델 인스턴스를 만들고 save() 메서드를 호출합니다.

 

post = Post(title="첫 번째 게시글", content="이것은 첫 번째 게시글입니다.")
post.save()
 

이렇게 하면 새로운 게시글이 데이터베이스에 저장됩니다.

 

3.2 데이터 조회

 

데이터베이스에 저장된 데이터를 조회하려면 ORM의 다양한 메서드를 사용할 수 있습니다. 예를 들어, 모든 게시글을 조회하려면 all() 메서드를 사용합니다.

 

posts = Post.objects.all()

 

특정 조건에 맞는 데이터를 조회하려면 filter() 또는 get() 메서드를 사용합니다. 예를 들어, 특정 제목을 가진 게시글을 조회하려면 다음과 같이 작성할 수 있습니다.

 

post = Post.objects.filter(title="첫 번째 게시글")

 

3.3 데이터 수정

 

저장된 데이터를 수정하려면 먼저 수정할 데이터를 조회한 후, 원하는 필드를 변경하고 save() 메서드를 호출합니다.

post = Post.objects.get(id=1)
post.title = "수정된 제목"
post.save()

 

3.4 데이터 삭제

데이터를 삭제하려면 delete() 메서드를 사용합니다.

 

post = Post.objects.get(id=1)
post.delete()

 

4. Django 관리자(Admin) 페이지

Django의 ORM과 모델을 통해 데이터를 쉽게 처리할 수 있을 뿐만 아니라, Django는 관리자 페이지를 제공하여 이를 쉽게 관리할 수 있습니다. 관리자는 데이터베이스에 저장된 데이터를 시각적으로 확인하고 관리할 수 있습니다.

 

관리자 페이지에서 모델을 관리하려면 admin.py 파일에서 모델을 등록해야 합니다.

 

from django.contrib import admin
from .models import Post

admin.site.register(Post)

 

이제 http://127.0.0.1:8000/admin/에 접속하여 관리자 페이지에 로그인한 후 게시글을 생성, 수정, 삭제할 수 있습니다.

 

이번 포스팅에서는 Django의 데이터베이스 모델과 ORM에 대해 알아보았습니다. Django의 ORM은 데이터베이스와 상호작용하는 강력한 도구로, SQL을 사용하지 않고도 데이터를 처리할 수 있습니다. 이를 통해 데이터를 효율적으로 생성하고 조회하며, 수정 및 삭제할 수 있습니다.

 

다음 포스팅에서는 Django의 마이그레이션에 대해 깊이 다루고, 모델의 변경 사항을 데이터베이스에 반영하는 방법을 설명하겠습니다.

반응형