added new lighter serializer for list of movielists
This commit is contained in:
parent
548cc478b9
commit
54cdeb56af
2 changed files with 28 additions and 7 deletions
|
@ -28,9 +28,18 @@ class MovieSerializer(serializers.ModelSerializer):
|
||||||
def get_has_been_scheduled(self, obj):
|
def get_has_been_scheduled(self, obj):
|
||||||
return Showing.objects.filter(movie_id=obj.id).exists()
|
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):
|
class MovieListSerializer(serializers.ModelSerializer):
|
||||||
movie_count = serializers.SerializerMethodField()
|
|
||||||
movies = MovieSerializer(read_only=True, many=True)
|
movies = MovieSerializer(read_only=True, many=True)
|
||||||
serializer_class = MovieSerializer
|
serializer_class = MovieSerializer
|
||||||
|
|
||||||
|
@ -42,10 +51,8 @@ class MovieListSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MovieList
|
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):
|
class UserSerializer(serializers.Serializer):
|
||||||
|
|
|
@ -16,7 +16,7 @@ from movie_manager.serializers import (
|
||||||
MovieListSerializer,
|
MovieListSerializer,
|
||||||
MovieSerializer,
|
MovieSerializer,
|
||||||
ScheduleSerializer,
|
ScheduleSerializer,
|
||||||
ShowingSerializer,
|
ShowingSerializer, MovieListListSerializer,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,11 +55,25 @@ class MovieViewset(viewsets.ModelViewSet):
|
||||||
|
|
||||||
|
|
||||||
class MovieListViewset(viewsets.ModelViewSet):
|
class MovieListViewset(viewsets.ModelViewSet):
|
||||||
queryset = MovieList.objects.prefetch_related("movies").order_by("name")
|
queryset = MovieList.objects.all()
|
||||||
authentication_classes = [TokenAuthentication]
|
authentication_classes = [TokenAuthentication]
|
||||||
permission_classes = [permissions.IsAuthenticated | ReadOnly]
|
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):
|
def create(self, request, *args, **kwargs):
|
||||||
movie_list = MovieList.objects.create(
|
movie_list = MovieList.objects.create(
|
||||||
|
|
Loading…
Add table
Reference in a new issue