Opened 20 years ago
Closed 20 years ago
#1312 closed enhancement (fixed)
QuerySet.in_bulk demands list, should demand iterable
| Reported by: | Simon Willison | Owned by: | Adrian Holovaty |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | |
| Severity: | minor | 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 QuerySet.in_bulk method currently uses the following to ensure it has been passed a list of IDs:
def in_bulk(self, id_list):
assert isinstance(id_list, list), "in_bulk() must be provided with a list of IDs."
assert id_list != [], "in_bulk() cannot be passed an empty ID list."
...
This means you can't pass in some other iterable that returns ids, which is a bit of a shame. Suggest doing this instead:
def in_bulk(self, id_list):
try:
iter(id_list)
except TypeError:
assert False, "in_bulk() must be provided with a list of IDs."
id_list = list(id_list)
assert id_list != [], "in_bulk() cannot be passed an empty ID list."
...
Note:
See TracTickets
for help on using tickets.
(In [2221]) magic-removal: Fixed #1312 -- made QuerySet.in_bulk() accepting of any iterable, not just lists