mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #34378 -- Made QuerySet.in_bulk() not clear odering when id_list is passed.
This reverts 340eaded4e
.
This commit is contained in:
parent
56e5ea805b
commit
55bcbd8d17
@ -1108,9 +1108,9 @@ class QuerySet(AltersData):
|
|||||||
qs = ()
|
qs = ()
|
||||||
for offset in range(0, len(id_list), batch_size):
|
for offset in range(0, len(id_list), batch_size):
|
||||||
batch = id_list[offset : offset + batch_size]
|
batch = id_list[offset : offset + batch_size]
|
||||||
qs += tuple(self.filter(**{filter_key: batch}).order_by())
|
qs += tuple(self.filter(**{filter_key: batch}))
|
||||||
else:
|
else:
|
||||||
qs = self.filter(**{filter_key: id_list}).order_by()
|
qs = self.filter(**{filter_key: id_list})
|
||||||
else:
|
else:
|
||||||
qs = self._chain()
|
qs = self._chain()
|
||||||
return {getattr(obj, field_name): obj for obj in qs}
|
return {getattr(obj, field_name): obj for obj in qs}
|
||||||
|
@ -246,6 +246,35 @@ class LookupTests(TestCase):
|
|||||||
with self.assertRaisesMessage(ValueError, msg):
|
with self.assertRaisesMessage(ValueError, msg):
|
||||||
Article.objects.in_bulk([self.au1], field_name="author")
|
Article.objects.in_bulk([self.au1], field_name="author")
|
||||||
|
|
||||||
|
@skipUnlessDBFeature("can_distinct_on_fields")
|
||||||
|
def test_in_bulk_preserve_ordering(self):
|
||||||
|
articles = (
|
||||||
|
Article.objects.order_by("author_id", "-pub_date")
|
||||||
|
.distinct("author_id")
|
||||||
|
.in_bulk([self.au1.id, self.au2.id], field_name="author_id")
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
articles,
|
||||||
|
{self.au1.id: self.a4, self.au2.id: self.a5},
|
||||||
|
)
|
||||||
|
|
||||||
|
@skipUnlessDBFeature("can_distinct_on_fields")
|
||||||
|
def test_in_bulk_preserve_ordering_with_batch_size(self):
|
||||||
|
old_max_query_params = connection.features.max_query_params
|
||||||
|
connection.features.max_query_params = 1
|
||||||
|
try:
|
||||||
|
articles = (
|
||||||
|
Article.objects.order_by("author_id", "-pub_date")
|
||||||
|
.distinct("author_id")
|
||||||
|
.in_bulk([self.au1.id, self.au2.id], field_name="author_id")
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
articles,
|
||||||
|
{self.au1.id: self.a4, self.au2.id: self.a5},
|
||||||
|
)
|
||||||
|
finally:
|
||||||
|
connection.features.max_query_params = old_max_query_params
|
||||||
|
|
||||||
@skipUnlessDBFeature("can_distinct_on_fields")
|
@skipUnlessDBFeature("can_distinct_on_fields")
|
||||||
def test_in_bulk_distinct_field(self):
|
def test_in_bulk_distinct_field(self):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
Loading…
Reference in New Issue
Block a user