카테고리 없음

조금 더 복잡한 쿼리사용

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'))