#23354 closed Bug (fixed)
ModelChoiceField does not handle MultipleObjectsReturned
| Reported by: | Keryn Knight | Owned by: | nobody |
|---|---|---|---|
| Component: | Forms | Version: | dev |
| 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
As far as I can gather [that is, this hasn't actually bitten me], the to_python for ModelChoiceField does not catch the queryset model's MultipleObjectsReturned exception, which in most cases will be fine because the query will be against the pk, which is ostensibly unique unless a user has gone out of their way to break things.
However, given the ability to use to_field_name (which was recently documented [in #21860], increasing the likelihood of it's usage) it is feasible that a user would end up using a field which is not unique (or even spans a relationship?), and thus in a simple key:value lookup could return multiple rows.
This would also technically affect the ModelMultipleChoiceField, whose superclass is ModelChoiceField and whose to_python method is used for each value.
Change History (3)
comment:1 by , 11 years ago
comment:2 by , 11 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
Shouldn't we just document that
to_field_namemust be able to uniquely identify the objects? I'm not sure what error message we'd present since it's presumably a programming error and not something a user could fix.