학습한 내용
Validation
Annotate Field
- annotate(): 파생변수 추가할 때 사용
- Aggregation Function
- 종류: Avg, Count, Max, Min, Sum 등
- 하나의 값을 반환
- Coalesce: aggregate가 None을 반환하는 것을 방지
- Subquery
from rest_framework import generics
from django.db.models import Subquery, OuterRef, Avg, Count
from django.db.models.functions import Coalesce
from app.movie.models import Movie
from app.review.models import Review
class MovieListCreateView(generics.ListCreateAPIView):
avg_rating_subquery = Review.objects.filter(movie=OuterRef('id')).values('movie').annotate(avg = Avg('rating')).values('avg')
queryset = Movie.objects.annotate(
avg_rating = Coalesce(Subquery(avg_rating_subquery), 0.0)
)