Kaydet (Commit) 5b0375ec authored tarafından Josh Smeaton's avatar Josh Smeaton Kaydeden (comit) Anssi Kääriäinen

Fixed #23001 -- Fixed mixing defer and annotations

üst 954e7b8a
......@@ -260,7 +260,7 @@ class QuerySet(object):
load_fields.append(field.name)
skip = None
if load_fields and not fill_cache:
if load_fields:
# Some fields have been deferred, so we have to initialize
# via keyword arguments.
skip = set()
......
......@@ -88,6 +88,31 @@ class BaseAggregateTestCase(TestCase):
)
self.assertEqual(b.mean_age, 34.5)
def test_annotate_defer(self):
qs = Book.objects.annotate(
page_sum=Sum("pages")).defer('name').filter(pk=1)
rows = [
(1, "159059725", 447, "The Definitive Guide to Django: Web Development Done Right")
]
self.assertQuerysetEqual(
qs.order_by('pk'), rows,
lambda r: (r.id, r.isbn, r.page_sum, r.name)
)
def test_annotate_defer_select_related(self):
qs = Book.objects.select_related('contact').annotate(
page_sum=Sum("pages")).defer('name').filter(pk=1)
rows = [
(1, "159059725", 447, "Adrian Holovaty",
"The Definitive Guide to Django: Web Development Done Right")
]
self.assertQuerysetEqual(
qs.order_by('pk'), rows,
lambda r: (r.id, r.isbn, r.page_sum, r.contact.name, r.name)
)
def test_annotate_m2m(self):
books = Book.objects.filter(rating__lt=4.5).annotate(Avg("authors__age")).order_by("name")
self.assertQuerysetEqual(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment