added new lighter serializer for list of movielists #10

Merged
tiradoe merged 1 commit from movielist-improvements into main 2025-06-30 22:31:06 +00:00
2 changed files with 28 additions and 7 deletions

View file

@ -28,9 +28,18 @@ class MovieSerializer(serializers.ModelSerializer):
def get_has_been_scheduled(self, obj):
return Showing.objects.filter(movie_id=obj.id).exists()
class MovieListListSerializer(serializers.ModelSerializer):
movie_count = serializers.SerializerMethodField()
class Meta:
model = MovieList
fields = ["id", "name", "owner", "public", "movie_count"]
def get_movie_count(self, obj):
return obj.movies.count()
class MovieListSerializer(serializers.ModelSerializer):
movie_count = serializers.SerializerMethodField()
movies = MovieSerializer(read_only=True, many=True)
serializer_class = MovieSerializer
@ -42,10 +51,8 @@ class MovieListSerializer(serializers.ModelSerializer):
class Meta:
model = MovieList
fields = ["id", "name", "owner", "public", "movies", "movie_count"]
fields = ["id", "name", "owner", "public", "movies"]
def get_movie_count(self, obj):
return obj.movies.count()
class UserSerializer(serializers.Serializer):

View file

@ -16,7 +16,7 @@ from movie_manager.serializers import (
MovieListSerializer,
MovieSerializer,
ScheduleSerializer,
ShowingSerializer,
ShowingSerializer, MovieListListSerializer,
)
@ -55,11 +55,25 @@ class MovieViewset(viewsets.ModelViewSet):
class MovieListViewset(viewsets.ModelViewSet):
queryset = MovieList.objects.prefetch_related("movies").order_by("name")
queryset = MovieList.objects.all()
authentication_classes = [TokenAuthentication]
permission_classes = [permissions.IsAuthenticated | ReadOnly]
serializer_class = MovieListSerializer
def get_serializer_class(self):
if self.action == "list":
return MovieListListSerializer
else:
return MovieListSerializer
def get_queryset(self):
if self.action == "list":
return MovieList.objects.filter(owner=self.request.user)
else:
return MovieList.objects.prefetch_related(
"movies",
"movies__showing_set"
).order_by("name")
def create(self, request, *args, **kwargs):
movie_list = MovieList.objects.create(