Aggregation function
aggregation function은 평균, 합, 최대, 최대값과 같은 값을 알려줄 때 쓰는 함수이다.
Avg - 평균
여기서 한 가게의 별점의 평균 값을 구하기 위해 avg를 사용한 것이다.
from django.db.models import Avg
사용하기 위해선 django.db.models에서 Avg를 호출해야한다.
store = Store.odjects.all().annotate(average_point=Avg('rating__rate'))
우선 코드를 보기 전에 annotate라는 매서드부터 알아야한다.
쉽게 말하면 models.py의 class에서
class Store()에 가짜 필드을 추가해주는 것이다.
이제 class Store에는 average_point라는 가짜 필드가 임시적으로 생성 됐다.
후에 Avg('rating__rate') 부분은
Avg 즉 평균값을 낸다는 것이다.
어디서? 바로 뒤에 있는 class Rating에 있는 rate속성의 값을 평균 값으로 내서 store에 새로운 필드을 만들어 준다는 것 이다.
Avg('')에 ''로 감싸여진 부분은 django 명명법상 "관계이름__대상필드명"으로 적어야하고 소문자로 표기해야 한다.
호출할 때에는
Store.objects.all().average_pront
로 일반 필드처럼 호출할 수 있다.