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 = ()
|
||||
for offset in range(0, len(id_list), 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:
|
||||
qs = self.filter(**{filter_key: id_list}).order_by()
|
||||
qs = self.filter(**{filter_key: id_list})
|
||||
else:
|
||||
qs = self._chain()
|
||||
return {getattr(obj, field_name): obj for obj in qs}
|
||||
|
@ -246,6 +246,35 @@ class LookupTests(TestCase):
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
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")
|
||||
def test_in_bulk_distinct_field(self):
|
||||
self.assertEqual(
|
||||
|
Loading…
Reference in New Issue
Block a user