카테고리 없음
조금 더 복잡한 쿼리사용
rlarudals
2024. 9. 3. 20:58
1. Q()를 이용해서 여러 조건 연결
- 여러 조건에 해당하는 ORM이 필요하면 Q() 이용
- & : and, | : or, ~ : not 연산자 활용 가능
EX
가격이 15000보다 크거나 수량이 3000보다 적은 제품들을 조회
- Product.objects.filter( Q(price__gt=15000) | Q(quantity__lt=3000) )
2. F()를 이용하여 필드값 가져오기
- 쿼리를 작성할 때 이전의 필드 값에 의존하는 작업을 쉽게 할 수 있음
- 주로 필드의 값을 가져오거나 업데이트해서 값을 참조
EX
모든 프로덕트의 가격을 1000원 인상
- Product.objects.update(price = F('price') + 1000)
3. aggregate() 를 사용해서 쿼리
- aggregate == 종합/집약하다
- 조회하는 쿼리셋 전체에 대해 결과를 집계/집약
- 주로 집계 함수(Avg, Sum, Count 등)와 많이 사용
- count를 할 경우 Group By 적용해서 사용
EX
전체 프로덕트의 평균 가격
- Product.objects.aggregate(Avg('price'))
Group By 방식
EX
- Product.objects.values('category').annotate(category_count = Count('category'))