#36288 closed Bug (fixed)
Regression in values_list() with duplicated field names
Reported by: | Claude Paroz | Owned by: | Simon Charette |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 5.2 |
Severity: | Release blocker | Keywords: | |
Cc: | Simon Charette | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
In Django 5.2, a call to values_list("field", "field") will return tuples with a single member, as duplicated field names seem to be filtered out somewhere.
I suspect a regression caused by #28900.
Change History (7)
comment:1 by , 5 months ago
Cc: | added |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 5 months ago
Owner: | set to |
---|---|
Status: | new → assigned |
This is effectively a regression caused by #28900 (65ad4ade74dc9208b9d686a451cd6045df0c9c3a) as sql.Query.selected
is now a dict[alias, Expression]
and since values_list
defaults to using the provided strings as field names they get considered to be a single one.
We'll most likely have to generate an alias for the existing members with colliding names.
comment:3 by , 5 months ago
Has patch: | set |
---|
comment:4 by , 5 months ago
Thanks for the quick reaction! FWIW, the use case that revealed this was a QuerySet to produce tuples for form choices where the value and the verbose parts were identical.
comment:5 by , 5 months ago
Triage Stage: | Accepted → Ready for checkin |
---|
Thank you Claude for the report! I have reproduced with the following:
Versus:
Now, I'm not sure this is a bug? I mean there is certainly a change in behavior, but to me the 5.1 result feels "buggy", so in a way this "was fixed" in 5.2.
On the other hand, the DB query does duplicate the columns so perhaps this *is* a regression:
Claude, could you indulge me and share in the ticket the use case for getting the repeated fields in the
values_list
result? Accepting in the meantime.