Django SimpleUploadedFile с Python 3

У кого-нибудь есть рабочий пример SimpleUploadedFile с Django в Python 3?

Этот код работал в Python 2, но не в Python 3.

У меня есть тест ниже:

test.py

 class AttachmentModelTests(TestCase): def setUp(self): self.model = mommy.make(LocationLevel) base_dir = dirname(dirname(dirname(__file__))) self.image = join(base_dir, "source/attachments/test_in/test-mountains.jpg") def test_create(self): _file = SimpleUploadedFile(self.image, "file_content", content_type="image/jpeg") attachment = Attachment.objects.create( model_id=self.model.id, file=_file ) self.assertIsInstance(attachment, Attachment) self.assertEqual( attachment.filename, self.image.split('/')[-1] # test-mountains.jpg ) 

Вот ошибка, которую он выводит:

 Traceback (most recent call last): File "/Users/alelevier/Documents/bsrs/bsrs-django/bigsky/generic/tests/test_models.py", line 97, in test_create content_type="image/jpeg") File "/Users/alelevier/.virtualenvs/bs/lib/python3.4/site-packages/django/core/files/uploadedfile.py", line 114, in __init__ super(SimpleUploadedFile, self).__init__(BytesIO(content), None, name, TypeError: 'str' does not support the buffer interface 

Этот ответ помог мне решить эту проблему.

В конце концов, это обновленный рабочий тестовый код:

 def test_create(self): (abs_dir_path, filename) = os.path.split(self.image) with open(self.image) as infile: _file = SimpleUploadedFile(filename, infile.read()) attachment = Attachment.objects.create( model_id=self.model.id, file=_file ) self.assertIsInstance(attachment, Attachment) self.assertEqual( attachment.filename, self.image.split('/')[-1] # test-mountains.jpg )