✅ Django ORM 요약본 – QuerySet 기초 활용법 정리
Django ORM(Object-Relational Mapping)은 SQL문 없이도 파이썬 코드로 데이터베이스와 직접 상호작용할 수 있게 해주는 강력한 도구입니다. 이번 튜토리얼에서는 ORM을 활용한 데이터 조회 및 필터링 방법을 중심으로 정리했습니다.
1. 📓 Django ORM 기본 개념
용어 설명
ORM | Object-Relational Mapping, 객체와 관계형 DB를 연결 |
Model Manager | .objects를 통해 모델 인스턴스를 제어함 |
Bookmark.objects | DB의 Bookmark 테이블에 접근하는 기본 구문 |
🔍 예시 코드:
Bookmark.objects.all() # 모든 데이터 조회
Bookmark.objects.get(pk=1) # 특정 데이터 한 건 조회 (Primary Key 기준)
2. 📓 QuerySet 기초 – all(), get(), filter()
메서드 설명
.all() | 전체 데이터를 조회 (SELECT * FROM table) |
.get() | 조건에 맞는 단일 객체 조회 (없거나 여러 개면 오류 발생) |
.filter() | 조건에 맞는 여러 개의 객체를 리스트(QuerySet) 형태로 반환 |
🔍 예시 코드:
Bookmark.objects.all() # 전체 북마크 조회
Bookmark.objects.get(pk=1) # id가 1인 북마크 조회
Bookmark.objects.filter(name="네이버") # 이름이 '네이버'인 모든 북마크 조회
3. 📊 필드 조건 검색 – 다양한 연산자 활용
장고 ORM은 다양한 필터 연산자를 지원하여 SQL의 WHERE 조건을 대체합니다.
연산자 의미 예시
__icontains | 포함된 문자열 (대소문자 무시) | name__icontains="네이버" |
__gt | 크다 (greater than) | id__gt=2 |
__gte | 크거나 같다 | created_at__gte="2024-01-01" |
__lt | 작다 (less than) | id__lt=5 |
__lte | 작거나 같다 | id__lte=10 |
🔍 예시 코드:
# 이름에 '네이버'가 포함된 북마크 조회
Bookmark.objects.filter(name__icontains="네이버")
# 2024년 이후에 생성된 북마크 조회
Bookmark.objects.filter(created_at__gte="2024-01-01")
4. 🌐 ORM 문서 및 실전 팁
🔍 장고 공식 문서 검색어 추천:
- Django ORM docs
- QuerySet API Reference
💡 자주 사용하는 함수:
- .exclude() – 특정 조건 제외:
Bookmark.objects.exclude(name="네이버")
- .order_by() – 정렬:
Bookmark.objects.order_by("-created_at") # 최신순
- .annotate() – 집계 필드 추가:
from django.db.models import Count
Bookmark.objects.annotate(total=Count("url"))
5. 🔗 마무리
이번 수업에서는 Django ORM의 기초를 학습하며 .all(), .get(), .filter()의 차이점과 주요 필터 조건들을 익혔습니다.
이를 활용하면 SQL문 없이도 충분히 다양한 데이터 조회 및 필터링이 가능하며, 코드의 가독성과 유지보수성도 높아집니다.
앞으로 더 복잡한 쿼리도 ORM으로 처리할 수 있도록 점차 확장해 나갈 예정입니다.
수고하셨습니다! 🚀
'Django' 카테고리의 다른 글
Chapter 2-8 Django ORM 완전 정복: 데이터 삭제, 업데이트, 필터링 실습 정리 (0) | 2025.04.30 |
---|---|
Chapter 2-7 Django ORM 완벽 가이드 (0) | 2025.04.30 |
Chapter 2-4 Django Admin 기능 완전 정복 요약본 (0) | 2025.04.30 |
Chapter 1-10 Django로 구구단 페이지 만들기 (0) | 2025.04.29 |
Chapter 1-9 Django 템플릿 구성 파일 개발 & 방안 (0) | 2025.04.29 |