📘 Django ORM 미니 프로젝트 실습: 북마크 대량 생성과 조건 필터링
이 글에서는 Django ORM을 활용한 북마크 목록 페이지 구현을 목표로, 쉘 환경에서 100개의 북마크를 생성하고, ID가 50 이상인 항목만 필터링하여 보여주는 실전 튜토리얼을 다룹니다. 특히 bulk_create와 filter() 메서드의 효율적 사용에 집중하여 DB 작업을 최적화하는 방법을 소개합니다.
1️⃣ 미니 프로젝트 개요 📚
- 목표:
- 북마크 100개 생성
- 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 |