diff --git a/tests/queryset_pickle/models.py b/tests/queryset_pickle/models.py
index 77134a5..0424fdd 100644
--- a/tests/queryset_pickle/models.py
+++ b/tests/queryset_pickle/models.py
@@ -68,3 +68,17 @@ class Container(object):
 
 class M2MModel(models.Model):
     groups = models.ManyToManyField(Group)
+
+
+class Book(models.Model):
+    title = models.CharField(max_length=100)
+
+
+class Author(models.Model):
+    name = models.CharField(max_length=100)
+    books = models.ManyToManyField(Book, related_name='authors')
+
+
+class Category(models.Model):
+    title = models.CharField(max_length=100)
+    books = models.ManyToManyField(Book, related_name='categories')
diff --git a/tests/queryset_pickle/tests.py b/tests/queryset_pickle/tests.py
index 5e42d90..15dab75 100644
--- a/tests/queryset_pickle/tests.py
+++ b/tests/queryset_pickle/tests.py
@@ -8,7 +8,7 @@ from django.test import TestCase
 from django.utils.encoding import force_text
 from django.utils.version import get_version
 
-from .models import Container, Event, Group, Happening, M2MModel
+from .models import Author, Book, Category, Container, Event, Group, Happening, M2MModel
 
 
 class PickleabilityTestCase(TestCase):
@@ -119,6 +119,26 @@ class PickleabilityTestCase(TestCase):
         groups = pickle.loads(pickle.dumps(groups))
         self.assertQuerysetEqual(groups, [g], lambda x: x)
 
+    def test_pickle_prefetch_related_with_m2m(self):
+        author = Author.objects.create(name='John Doe')
+        book = Book.objects.create(title='Adventures of Doe')
+        book.authors.add(author)
+        cat = Category.objects.create(title='Category')
+        cat.books.add(book)
+
+        Category.objects.all().delete()
+        Author.objects.all().delete()
+        Book.objects.all().delete()
+
+        author = Author.objects.create(name='John Doe')
+        book = Book.objects.create(title='Adventures of Doe')
+        book.authors.add(author)
+        cat = Category.objects.create(title='Category')
+        cat.books.add(book)
+
+        authors = Author.objects.prefetch_related('books__categories').all()
+        pickle.loads(pickle.dumps(authors))
+
     def test_missing_django_version_unpickling(self):
         """
         #21430 -- Verifies a warning is raised for querysets that are
