示例#1
0
 def create(self, request, *args, **kwargs):
     serializer = MovieTitleSerializer(data=request.data)
     if serializer.is_valid():
         movie_obj = Movie.objects.filter(**serializer.validated_data).first()
         if movie_obj:
             serializer_movie = self.serializer_class(instance=movie_obj)
         else:
             data = get_data_from_omdb(**serializer.validated_data) if serializer.is_valid() else None
             if not data:
                 return self.get_message_error(**serializer.validated_data)
             data = {
                 Movie.imdb_mapper_to_model_field(k.lower()): v
                 for k, v in data.items() if v != 'N/A'  # exclude empty values
             }
             serializer_movie = self.serializer_class(data=data)
             if not serializer_movie.is_valid():
                 return self.get_message_error(**serializer.validated_data)
             self.perform_create(serializer_movie)
     headers = self.get_success_headers(serializer_movie.data)
     return Response(serializer_movie.data, status=status.HTTP_201_CREATED, headers=headers)