def genres(request): try: return Response(GenreSerializer(Genre.objects.all(), many=True).data, status=status.HTTP_200_OK) except: return Response({"exception": "happened"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def genre(request, id): try: return Response(GenreSerializer(Genre.objects.get(id=id)).data, status=status.HTTP_200_OK) except: return Response({"exception": "happened"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class TitleListSerializer(serializers.ModelSerializer): category = CategorySerializer(read_only=True) genre = GenreSerializer(many=True, read_only=True) rating = serializers.FloatField(read_only=True) class Meta: model = Title fields = '__all__'
class TitleSerializerGet(serializers.ModelSerializer): rating = serializers.FloatField(read_only=True) genre = GenreSerializer(many=True) category = CategorySerializer(read_only=True) class Meta: fields = '__all__' model = Title
def genre_list(request): if request.method == 'GET': genres = Genre.objects.order_by('name') serializer = GenreSerializer(genres, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = GenreSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors)
class TitlesSerializer(serializers.ModelSerializer): """Сериализатор для вывода тайтлов(выводит name and slug)""" category = CategorySerializer() genre = GenreSerializer(many=True) rating = serializers.SerializerMethodField() class Meta: model = Title fields = '__all__' def get_rating(self, obj): if hasattr(obj, 'rating'): return obj.rating return None
def genres(request): if request.method == 'GET': try: genres = Genre.objects.all() serializer = GenreSerializer(genres, many=True) return Response(serializer.data, status=status.HTTP_200_OK) except: return Response({"server error"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) elif request.method == 'POST': serializer = GenreSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response({"created"}, status=status.HTTP_200_OK) return Response({"server error"}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def genre_detail(request, genre_id): try: genre = Genre.objects.get(id=genre_id) except Genre.DoesNotExist as e: return Response({'message': str(e)}, status=400) if request.method == 'GET': serializer = GenreSerializer(genre) return Response(serializer.data) elif request.method == 'PUT': serializer = GenreSerializer(instance=genre, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors) elif request.method == 'DELETE': genre.delete() return Response({'message': 'deleted'}, status=204)
def get(self, request, pk=None, genre_id=None): anime = get_anime(pk) genre = get_genre(genre_id) animeGenre = get_anime_genre(anime, genre) serializer = GenreSerializer(genre) return Response(serializer.data)
def get(self, request, pk=None): anime = get_anime(pk) genres_id = anime.genres.all() genres = [genre.genre for genre in genres_id] serializer = GenreSerializer(genres, many=True) return Response(serializer.data)