def filter_queryset(self, queryset, *args, **kwargs):
        """
        Prefetches based on 'fields' GET arg
        """
        filter_fields = copy.deepcopy(self.request.query_params)

        if 'fields' in filter_fields:
            filter_fields.pop('fields')
        if 'format' in filter_fields:
            filter_fields.pop('format')
        if 'page' in filter_fields:
            filter_fields.pop('page')
        if 'page_size' in filter_fields:
            filter_fields.pop('page_size')
        if 'ordering' in filter_fields:
            filter_fields.pop('ordering')
        if 'q'in filter_fields:
            filter_fields.pop('q')
        if 'q_fields' in filter_fields:
            filter_fields.pop('q_fields')

        for filter_field in filter_fields:
            found = False
            try:
                declared_filters = self.filter_class.declared_filters

                for key in declared_filters:
                    if filter_field == key:
                        found = True
                if found is False:
                    # make error in the code to fail
                    # if input wrong filter name.
                    setattr(self, 'filter_class', 'No Filter Class')
                    break
            except AttributeError:
                pass
        fields = self._get_query_fields(*args, **kwargs)
        if not fields:
            fields = self.serializer_fields

        select_related_fields = list(set(
            self.select_related_fields
        ) & set(fields))

        if select_related_fields:
            queryset = queryset.select_related(*select_related_fields)

        for field in fields:
            # TODO: Hook this up in the view - 2016-01-15
            if hasattr(queryset, 'prefetch_%s' % field):
                queryset = getattr(queryset, 'prefetch_%s' % field)()

        queryset = super(DynamicView, self).filter_queryset(
            queryset, *args, **kwargs
        )

        return queryset