diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 6e1370b72..64646d58c 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -679,4 +679,12 @@ class MultiPartRenderer(BaseRenderer):
     BOUNDARY = 'BoUnDaRyStRiNg' if django.VERSION >= (1, 5) else b'BoUnDaRyStRiNg'
 
     def render(self, data, accepted_media_type=None, renderer_context=None):
+        if hasattr(data, 'items'):
+            for key, value in data.items():
+                assert not isinstance(value, dict), (
+                    "Test data contained a dictionary value for key '%s', "
+                    "but multipart uploads do not support nested data. "
+                    "You may want to consider using format='JSON' in this "
+                    "test case." % key
+                )
         return encode_multipart(self.BOUNDARY, data)
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 70c83f8d9..e0bf759a4 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -172,6 +172,16 @@ class TestAPITestClient(TestCase):
         self.assertIsNotNone(response.redirect_chain)
         self.assertEqual(response.status_code, 200)
 
+    def test_invalid_multipart_data(self):
+        """
+        MultiPart encoding cannot support nested data, so raise a helpful
+        error if the user attempts to do so.
+        """
+        self.assertRaises(
+            AssertionError, self.client.post,
+            path='/view/', data={'valid': 123, 'invalid': {'a': 123}}
+        )
+
 
 class TestAPIRequestFactory(TestCase):
     def test_csrf_exempt_by_default(self):