mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #21760 -- prefetch_related used an inefficient query for reverse FK.
Regression introduced by commit 9777442
. Refs #21410.
This commit is contained in:
parent
3417ba0309
commit
d3b71b976d
4 changed files with 26 additions and 1 deletions
|
@ -4,8 +4,10 @@ from django.core.exceptions import ObjectDoesNotExist
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import connection
|
||||
from django.db.models import Prefetch
|
||||
from django.db.models.query import get_prefetcher
|
||||
from django.test import TestCase, override_settings
|
||||
from django.utils import six
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
from .models import (Author, Book, Reader, Qualification, Teacher, Department,
|
||||
TaggedItem, Bookmark, AuthorAddress, FavoriteAuthors, AuthorWithAge,
|
||||
|
@ -1055,3 +1057,19 @@ class Ticket21410Tests(TestCase):
|
|||
|
||||
def test_bug(self):
|
||||
list(Author2.objects.prefetch_related('first_book', 'favorite_books'))
|
||||
|
||||
|
||||
class Ticket21760Tests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.rooms = []
|
||||
for _ in range(3):
|
||||
house = House.objects.create()
|
||||
for _ in range(3):
|
||||
self.rooms.append(Room.objects.create(house = house))
|
||||
|
||||
#@override_settings(DEBUG=True)
|
||||
def test_bug(self):
|
||||
prefetcher = get_prefetcher(self.rooms[0], 'house')[0]
|
||||
queryset = prefetcher.get_prefetch_queryset(list(Room.objects.all()))[0]
|
||||
self.assertNotIn(' JOIN ', force_text(queryset.query))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue