  
          if not search_fields:
              return queryset
  
          orm_lookups = [self.construct_search(str(search_field))
                         for search_field in search_fields]
  
          for search_term in self.get_search_terms(request):
              or_queries = [models.Q(**{orm_lookup: search_term})
                            for orm_lookup in orm_lookups]
 
</s> remove             self.choice_strings_to_values[str(item)] for item in value
 </s> add             self.choice_strings_to_values[six.text_type(item)] for item in value </s> remove             (str(key), key) for key in self.choices.keys()
 </s> add             (six.text_type(key), key) for key in self.choices.keys() </s> remove             value = decimal.Decimal(str(value).strip())
 </s> add             value = decimal.Decimal(six.text_type(value).strip()) </s> remove from django.utils import timezone
 </s> add 
        orm_lookups = [self.construct_search(six.text_type(search_field))
  
          if not search_fields:
              return queryset
  
        orm_lookups = [self.construct_search(six.text_type(search_field))
                         for search_field in search_fields]
  
          for search_term in self.get_search_terms(request):
              or_queries = [models.Q(**{orm_lookup: search_term})
                            for orm_lookup in orm_lookups]
keep keep keep keep replace keep keep keep keep keep
 Use six.text_type instead of str everywhere 
rest_framework/filters.py