Chapter 2-9 Django ORM 미니 프로젝트 실습: 북마크 대량 생성과 조건 필터링

2025. 4. 30. 18:24·프로젝트

📘 Django ORM 미니 프로젝트 실습: 북마크 대량 생성과 조건 필터링

이 글에서는 Django ORM을 활용한 북마크 목록 페이지 구현을 목표로, 쉘 환경에서 100개의 북마크를 생성하고, ID가 50 이상인 항목만 필터링하여 보여주는 실전 튜토리얼을 다룹니다. 특히 bulk_create와 filter() 메서드의 효율적 사용에 집중하여 DB 작업을 최적화하는 방법을 소개합니다.


1️⃣ 미니 프로젝트 개요 📚

  • 목표:
    1. 북마크 100개 생성
    2. ID가 50 이상인 항목만 필터링하여 표시
  • 활용 기능:
    • Bookmark.objects.create()로 개별 생성
    • bulk_create()로 대량 생성
    • filter(id__gt=50)로 조건 필터링

2️⃣ 장고 ORM으로 북마크 생성하기 🔍

✅ 기본 설정

python manage.py shell_plus  # django-extensions 사용 시
  • shell_plus를 통해 자동 임포트 환경 구성
  • 북마크 모델을 바로 사용할 수 있음

✅ 반복문으로 북마크 10개 생성

for i in range(10):
    Bookmark.objects.create(
        name=f"테스트{i}",
        url=f"https://naver{i}.com"
    )
  • create() 호출 시 created_at, updated_at 자동 생성
  • Bookmark.objects.all()로 확인 가능
  • Bookmark.objects.count()로 개수 확인 가능

3️⃣ 리스트 컴프리헨션 + bulk_create 최적화 📚

✅ 리스트 컴프리헨션으로 객체 생성

bookmark_list = [
    Bookmark(name=f"구글{i}", url="https://google.com")
    for i in range(10)
]
  • 이 시점에는 아직 DB에 저장되지 않음 → id 없음

✅ bulk_create로 한 번에 저장

Bookmark.objects.bulk_create(bookmark_list)
  • 장점: DB 호출 횟수 최소화 → 성능 향상
  • bookmark_list[0].id로 확인 시 ID가 존재함

🔥 TIP

방식 DB 호출 횟수 성능 비고

반복문 + create() 10회 느림 한 번씩 DB 접근
bulk_create() 1회 빠름 추천 방식 ✔️

4️⃣ 북마크 100개 생성 & 조건 필터링 📂

✅ 80개 추가 생성 예시

new_bookmark_list = [
    Bookmark(name=f"야후{i}", url="https://yahoo.com")
    for i in range(20, 100)
]
Bookmark.objects.bulk_create(new_bookmark_list)
  • 총 103개 생성됨 (count() 확인 가능)

✅ ID가 50 이상인 북마크 필터링

Bookmark.objects.filter(id__gt=50)
  • gt: greater than (초과)
  • gte: greater than or equal (이상)을 쓰고 싶다면 id__gte=50

5️⃣ 북마크 목록 페이지 출력 예시 💻

# views.py
from django.shortcuts import render
from .models import Bookmark

def bookmark_list(request):
    bookmarks = Bookmark.objects.filter(id__gte=50)
    return render(request, 'bookmark_list.html', {'bookmarks': bookmarks})
<!-- bookmark_list.html -->
{% for bookmark in bookmarks %}
  <p>{{ bookmark.name }} (ID: {{ bookmark.id }})</p>
{% endfor %}
  • 50번 이상의 북마크만 출력됨
  • ID 확인용 텍스트도 함께 출력 가능

✅ 마무리 요약

  • bulk_create()는 반복 생성보다 훨씬 효율적인 방법이며, 대규모 데이터 삽입 시 DB 성능을 지키는 핵심 기술입니다.
  • filter(id__gt=50)은 원하는 조건만 추출해 화면에 출력할 수 있도록 도와줍니다.
  • 실제 페이지에도 이 필터링 결과를 출력하여, 실무에 적용 가능한 웹 앱 구성이 가능합니다.

💡 다음 단계에서는 bulk_update와 Q 객체를 활용한 OR 조건 검색도 함께 알아보면 좋습니다!

'프로젝트' 카테고리의 다른 글

📚 Django 유저 리스트 & 상세 정보 프로젝트 정리  (0) 2025.04.30
📌 Django를 이용한 구구단 웹 페이지 만들기  (0) 2025.04.30
🚀 Flask 프로젝트 배포 이후 과정 정리 3 일차 (EC2 + Nginx + SSL + 도메인)  (0) 2025.04.27
FLASK 미니프로젝트 팀2-1 팀원과 검증 단계 2일차 아침  (0) 2025.04.25
FLASK 미니프로젝트 팀 (초기작업)1-4 기능 정의 & 흐름 설계 가이드  (0) 2025.04.23
'프로젝트' 카테고리의 다른 글
  • 📚 Django 유저 리스트 & 상세 정보 프로젝트 정리
  • 📌 Django를 이용한 구구단 웹 페이지 만들기
  • 🚀 Flask 프로젝트 배포 이후 과정 정리 3 일차 (EC2 + Nginx + SSL + 도메인)
  • FLASK 미니프로젝트 팀2-1 팀원과 검증 단계 2일차 아침
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (552) N
      • Python (31)
      • 프로젝트 (43)
      • 과제 (23)
      • Database (40)
      • 멘토링 (10) N
      • 특강 (25)
      • 기술블로그 (176) N
      • AI 분석 (3)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (52)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 2-9 Django ORM 미니 프로젝트 실습: 북마크 대량 생성과 조건 필터링
상단으로

티스토리툴바