diff --git a/django/core/files/base.py b/django/core/files/base.py index 6204d71040..48d0be43f0 100644 --- a/django/core/files/base.py +++ b/django/core/files/base.py @@ -122,9 +122,9 @@ class ContentFile(File): """ A File-like object that takes just raw content, rather than an actual file. """ - def __init__(self, content): + def __init__(self, content, name=None): content = content or '' - super(ContentFile, self).__init__(StringIO(content)) + super(ContentFile, self).__init__(StringIO(content), name=name) self.size = len(content) def __str__(self): diff --git a/tests/regressiontests/file_storage/tests.py b/tests/regressiontests/file_storage/tests.py index d4530bb0b1..d1ecbe60af 100644 --- a/tests/regressiontests/file_storage/tests.py +++ b/tests/regressiontests/file_storage/tests.py @@ -542,3 +542,14 @@ class InconsistentGetImageDimensionsBug(unittest.TestCase): size_1, size_2 = get_image_dimensions(image), get_image_dimensions(image) self.assertEqual(image_pil.size, size_1) self.assertEqual(size_1, size_2) + +class ContentFileTestCase(unittest.TestCase): + """ + Test that the constructor of ContentFile accepts 'name' (#16590). + """ + def test_content_file_default_name(self): + self.assertEqual(ContentFile("content").name, None) + + def test_content_file_custome_name(self): + name = "I can have a name too!" + self.assertEqual(ContentFile("content", name=name).name, name)