          self.assertQuerysetEqual(new_art.categories.all(), [])
  
          # Create a new article, with categories, via the form, but use commit=False.
          # The m2m data won't be saved until save_m2m() is invoked on the form.
          form_data['categories'] = [six.text_type(self.c1.id), six.text_type(self.c2.id)]
          f = ArticleForm(form_data)
          new_art = f.save(commit=False)
  
          # Manually save the instance
          new_art.save()
 
</s> remove             'categories': [six.text_type(self.c1.id), six.text_type(self.c2.id)]
 </s> add             'categories': [str(self.c1.id), str(self.c2.id)] </s> remove             'writer': six.text_type(self.w_royko.pk),
 </s> add             'writer': str(self.w_royko.pk), </s> remove             'host_set-0-id': six.text_type(host1.id),
 </s> add             'host_set-0-id': str(host1.id), </s> remove         if isinstance(ds_input, six.string_types):
 </s> add         if isinstance(ds_input, str): </s> remove                 if isinstance(content, six.binary_type):
 </s> add                 if isinstance(content, bytes):
        form_data['categories'] = [str(self.c1.id), str(self.c2.id)]
          self.assertQuerysetEqual(new_art.categories.all(), [])
  
          # Create a new article, with categories, via the form, but use commit=False.
          # The m2m data won't be saved until save_m2m() is invoked on the form.
        form_data['categories'] = [str(self.c1.id), str(self.c2.id)]
          f = ArticleForm(form_data)
          new_art = f.save(commit=False)
  
          # Manually save the instance
          new_art.save()
keep keep keep keep replace keep keep keep keep keep
 Refs #23919 -- Removed six.<various>_types usage

Thanks Tim Graham and Simon Charette for the reviews. 
tests/model_forms/tests.py