Django ORM Queryset Method

Happy_JG·2024년 6월 20일
0

Django

목록 보기
30/32

기본 조회 메서드

all(): 모델의 모든 객체를 반환

books = Book.objects.all()

filter(): 조건에 맞는 객체들을 반환

books_by_author = Book.objects.filter(author__name='J.K. Rowling')

exclude(): 조건에 맞지 않는 객체들을 반환

non_harry_potter_books = Book.objects.exclude(title__icontains='Harry Potter')

get(): 조건에 맞는 단일 객체를 반환

specific_book = Book.objects.get(id=1)

집계 함수

aggregate(): 집계 함수를 사용하여 쿼리셋의 집계 값을 계산

from django.db.models import Avg
average_price = Book.objects.aggregate(Avg('price'))

annotate(): 각 객체마다 집계 값을 추가

from django.db.models import Count
authors_with_book_count = Author.objects.annotate(book_count=Count('book'))

정렬 및 순서 메서드

order_by(): 특정 필드를 기준으로 쿼리셋을 정렬

books_ordered_by_date = Book.objects.order_by('published_date')

reverse(): 쿼리셋의 순서를 반대로 정렬

books_reversed = Book.objects.all().reverse()

필드 조회 및 선택

values(): 특정 필드들만 선택하여 쿼리셋을 반환

book_titles = Book.objects.values('title')

values_list(): 특정 필드들만 리스트로 반환

book_titles_list = Book.objects.values_list('title', flat=True)

only(): 지정한 필드들만 포함한 쿼리셋을 반환

book_titles_only = Book.objects.only('title')

defer(): 지정한 필드들을 제외한 쿼리셋을 반환

books_without_dates = Book.objects.defer('published_date')

데이터베이스 조작 메서드

create(): 새로운 객체를 생성하고 데이터베이스에 저장

new_book = Book.objects.create(title='New Book', author=author, published_date='2022-01-01')

bulk_create(): 여러 객체들을 한 번에 생성하여 데이터베이스에 저장

books = [Book(title='Book 1', author=author), Book(title='Book 2', author=author)]
Book.objects.bulk_create(books)

update(): 쿼리셋에 속한 객체들을 변경

Book.objects.filter(author=author).update(price=20)

delete(): 쿼리셋에 속한 객체들을 삭제

Book.objects.filter(published_date__lt='2000-01-01').delete()

기타 유용한 메서드

count(): 쿼리셋의 객체 수를 반환

book_count = Book.objects.count()

exists(): 쿼리셋에 객체가 존재하는지 여부를 반환

has_books = Book.objects.exists()

distinct(): 중복을 제거한 쿼리셋을 반환

unique_authors = Author.objects.distinct()
profile
hello!

0개의 댓글