#1350 closed defect (fixed)
magic-removal: in_bulk id lookup fails if data hasn't been cached before
Reported by: | Owned by: | Adrian Holovaty | |
---|---|---|---|
Component: | Core (Other) | Version: | magic-removal |
Severity: | normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
The only way I can get in_bulk dictionary lookups to work is after forcing the complete data set to be read from db e.g. by calling repr before performing the lookup.
>>> polls = Poll.objects.in_bulk([1, 2, 3]) >>> # No data cached, lookup fails: >>> polls[1] Traceback (most recent call last): File "<stdin>", line 1, in ? File "/home/andreas/workspace/django-magic-removal/django/db/models/query.py", line 103, in __getitem__ return self._clone(_offset=k, _limit=1).get() File "/home/andreas/workspace/django-magic-removal/django/db/models/query.py", line 159, in get obj_list = list(self.filter(*args, **kwargs)) File "/home/andreas/workspace/django-magic-removal/django/db/models/query.py", line 87, in __iter__ return iter(self._get_data()) File "/home/andreas/workspace/django-magic-removal/django/db/models/query.py", line 391, in _get_data for i in self.iterator(): File "/home/andreas/workspace/django-magic-removal/django/db/models/query.py", line 385, in iterator self._where.append("%s.%s IN (%s)" % (backend.quote_name(self.model._meta.db _table), backend.quote_name(self.model._meta.pk.column), ",".join(['%s'] * len(s elf._id_list)))) AttributeError: 'InBulkQuerySet' object has no attribute '_id_list' >>> # __repr__ caches the data: >>> polls {1: Poll #1, 2: Poll #2, 3: Poll #3} >>> # now id lookup works: >>> polls[1] Poll #1
Note:
See TracTickets
for help on using tickets.
This was fixed in [2354], but apparently Adrian forgot to close the ticket.