          super(ChoiceField, self).__init__(**kwargs)
  
      def to_internal_value(self, data):
          try:
              return self.choice_strings_to_values[str(data)]
          except KeyError:
              self.fail('invalid_choice', input=data)
  
      def to_representation(self, value):
          return self.choice_strings_to_values[str(value)]
 
</s> remove         return self.choice_strings_to_values[str(value)]
 </s> add         return self.choice_strings_to_values[six.text_type(value)] </s> remove             data = int(str(data))
 </s> add             data = int(six.text_type(data)) </s> remove         return str(data)
 </s> add         return six.text_type(data) </s> remove         return str(data).strip()
 </s> add         return six.text_type(data).strip() </s> remove         return str(value)
 </s> add         return six.text_type(value)
            return self.choice_strings_to_values[six.text_type(data)]
          super(ChoiceField, self).__init__(**kwargs)
  
      def to_internal_value(self, data):
          try:
            return self.choice_strings_to_values[six.text_type(data)]
          except KeyError:
              self.fail('invalid_choice', input=data)
  
      def to_representation(self, value):
          return self.choice_strings_to_values[str(value)]
keep keep keep keep replace keep keep keep keep keep
 Use six.text_type instead of str everywhere 
rest_framework/fields.py