diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/prefetch_related/models.py | 15 | ||||
| -rw-r--r-- | tests/prefetch_related/tests.py | 28 |
2 files changed, 42 insertions, 1 deletions
diff --git a/tests/prefetch_related/models.py b/tests/prefetch_related/models.py index 82bf85e401..f94659113a 100644 --- a/tests/prefetch_related/models.py +++ b/tests/prefetch_related/models.py @@ -215,3 +215,18 @@ class WordEntry(models.Model): def __str__(self): return "%s (%s)" % (self.name, self.id) + + +## Ticket #21410: Regression when related_name="+" + +@python_2_unicode_compatible +class Author2(models.Model): + name = models.CharField(max_length=50, unique=True) + first_book = models.ForeignKey('Book', related_name='first_time_authors+') + favorite_books = models.ManyToManyField('Book', related_name='+') + + def __str__(self): + return self.name + + class Meta: + ordering = ['id'] diff --git a/tests/prefetch_related/tests.py b/tests/prefetch_related/tests.py index 2e3fee6be6..384457aba4 100644 --- a/tests/prefetch_related/tests.py +++ b/tests/prefetch_related/tests.py @@ -9,7 +9,7 @@ from django.utils import six from .models import (Author, Book, Reader, Qualification, Teacher, Department, TaggedItem, Bookmark, AuthorAddress, FavoriteAuthors, AuthorWithAge, BookWithYear, BookReview, Person, House, Room, Employee, Comment, - LessonEntry, WordEntry) + LessonEntry, WordEntry, Author2) class PrefetchRelatedTests(TestCase): @@ -651,3 +651,29 @@ class Ticket19607Tests(TestCase): def test_bug(self): list(WordEntry.objects.prefetch_related('lesson_entry', 'lesson_entry__wordentry_set')) + + +class Ticket21410Tests(TestCase): + + def setUp(self): + self.book1 = Book.objects.create(title="Poems") + self.book2 = Book.objects.create(title="Jane Eyre") + self.book3 = Book.objects.create(title="Wuthering Heights") + self.book4 = Book.objects.create(title="Sense and Sensibility") + + self.author1 = Author2.objects.create(name="Charlotte", + first_book=self.book1) + self.author2 = Author2.objects.create(name="Anne", + first_book=self.book1) + self.author3 = Author2.objects.create(name="Emily", + first_book=self.book1) + self.author4 = Author2.objects.create(name="Jane", + first_book=self.book4) + + self.author1.favorite_books.add(self.book1, self.book2, self.book3) + self.author2.favorite_books.add(self.book1) + self.author3.favorite_books.add(self.book2) + self.author4.favorite_books.add(self.book3) + + def test_bug(self): + list(Author2.objects.prefetch_related('first_book', 'favorite_books')) |
