Opened 19 years ago
Closed 19 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