          except KeyError:
              self.fail('invalid_choice', input=data)
  
      def to_representation(self, value):
          return self.choice_strings_to_values[str(value)]
  
  
  class MultipleChoiceField(ChoiceField):
      default_error_messages = {
          'invalid_choice': _('`{input}` is not a valid choice.'),
 
</s> remove             return self.choice_strings_to_values[str(data)]
 </s> add             return self.choice_strings_to_values[six.text_type(data)] </s> remove         return str(value)
 </s> add         return six.text_type(value) </s> remove         return str(value)
 </s> add         return six.text_type(value) </s> remove         return str(value).strip()
 </s> add         return six.text_type(value).strip() </s> remove             data = int(str(data))
 </s> add             data = int(six.text_type(data))
        return self.choice_strings_to_values[six.text_type(value)]
          except KeyError:
              self.fail('invalid_choice', input=data)
  
      def to_representation(self, value):
        return self.choice_strings_to_values[six.text_type(value)]
  
  
  class MultipleChoiceField(ChoiceField):
      default_error_messages = {
          'invalid_choice': _('`{input}` is not a valid choice.'),
keep keep keep keep replace keep keep keep keep keep
 Use six.text_type instead of str everywhere 
rest_framework/fields.py