Django

Chapter 2-6 Django ORM 요약본 – QuerySet 기초 활용법 정리

Chansman 2025. 4. 30. 15:30

✅ 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으로 처리할 수 있도록 점차 확장해 나갈 예정입니다.

수고하셨습니다! 🚀