Django ORM 완벽 가이드 🌟
데이터베이스를 다루는 가장 직관적이고 강력한 방법, Django ORM! 이 글에서는 실습 중심으로 CRUD와 필터 기능을 학습하고, 셸 환경 설정부터 실전 팁까지 전부 정리해드립니다.
1️⃣ 장고 ORM 사용을 위한 셸 세팅 방법 🐍
명령어 설명
python manage.py shell | Django ORM 사용을 위한 기본 셸 접속 |
pip install ipython | 더 나은 셸 환경 제공 (자동 완성, 컬러 출력) |
pip install django-extensions | shell_plus 등 강력한 확장 기능 제공 |
# settings.py 예시
THIRD_PARTY_APPS = [
"django_extensions",
]
INSTALLED_APPS = DJANGO_APPS + OWN_APPS + THIRD_PARTY_APPS
2️⃣ Django ORM CRUD 실습 📚
🔎 데이터 조회 (Read)
- 전체 조회: Bookmark.objects.all()
- 단일 조회:
- Bookmark.objects.first()
- Bookmark.objects.last()
- Bookmark.objects.get(id=1)
📝 데이터 생성 (Create)
- 직접 생성:
Bookmark.objects.create(name="야후", url="https://yahoo.com")
- 클래스 방식:
bm = Bookmark(name="야후2", url="https://yahoo.com")
bm.save()
✏️ 데이터 수정 (Update)
bm.name = "네이버2"
bm.save()
❌ 데이터 삭제 (Delete)
bm.delete()
🔁 다수 객체 업데이트
Bookmark.objects.filter(url__icontains="naver").update(name="네이버")
3️⃣ Django ORM의 검색 기능 🔍
메서드 설명 예시
filter(name="네이버") | 완전 일치 검색 | ✔️ 정확히 일치할 경우만 조회 |
name__icontains="네" | 부분 일치 (LIKE) | 🔍 일부 포함된 경우 검색 |
name__startswith="네" | 시작 문자 검색 | 📌 "네"로 시작하는 항목 |
name__endswith="버" | 끝 문자 검색 | ✅ "버"로 끝나는 항목 |
name__in=["네이버", "야후"] | 복수 조건 검색 | ✔️ 둘 중 하나만 일치해도 검색 |
filter(name="네이버", url__startswith="https") | AND 조건 검색 | 🔗 두 조건 모두 만족 |
⚠️ icontains, startswith 등은 성능 부하를 줄 수 있으므로 너무 짧은 단어는 지양!
4️⃣ 실무 팁 & 흔한 실수 방지 💡
실수 ❌ 올바른 사용 ✅
python 명령으로 ORM 접근 | python manage.py shell 사용 |
객체 생성 후 save() 호출 생략 | 클래스 방식 생성 시 꼭 save() 필요 |
get()을 조건 모호하게 사용 | 결과 2개 이상일 땐 filter() 사용 |
5️⃣ 전체 요약 🎯
- Django ORM은 복잡한 SQL 없이도 모델 기반으로 DB를 직관적으로 조작할 수 있습니다.
- 셸 환경에서는 ipython과 django-extensions로 개발 편의성을 극대화하세요.
- CRUD, 필터 기능을 다양한 방식으로 익혀 실전 웹 애플리케이션에 바로 적용 가능합니다.
👉 다음 편에서는 Q 객체를 활용한 OR 조건 검색 및 복합 쿼리 구성법을 다룹니다. 기대해주세요!
'Django' 카테고리의 다른 글
Chapter 3-2 Django 블로그 목록 페이지 만들기 (0) | 2025.05.06 |
---|---|
Chapter 2-8 Django ORM 완전 정복: 데이터 삭제, 업데이트, 필터링 실습 정리 (0) | 2025.04.30 |
Chapter 2-6 Django ORM 요약본 – QuerySet 기초 활용법 정리 (0) | 2025.04.30 |
Chapter 2-4 Django Admin 기능 완전 정복 요약본 (0) | 2025.04.30 |
Chapter 2-3 Django 모델 & 마이그레이션 완전 정복 (0) | 2025.04.30 |