Opened 14 years ago
Closed 13 years ago
#17911 closed Bug (fixed)
Admin change page does not "map" None choices when they are readonly
| Reported by: | Owned by: | edwtjo | |
|---|---|---|---|
| Component: | contrib.admin | Version: | 1.3 |
| Severity: | Normal | Keywords: | |
| Cc: | charette.s@… | Triage Stage: | Ready for checkin |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | yes |
Description
The Django admin change page does not "map" None values as per the class' model field choices when the values are readonly. It shows "(None)" (this value comes from EMPTY_CHANGELIST_VALUE) instead. This is demonstrated by the attached screenshot original_helpers_incorrect_change.png. The admin select page properly maps None values based on the class' model field choices. This is demonstrated by the attached screenshot original_helpers_correct_select.png. The change page should display the same value that the select page does. See attached screenshot modified_helpers_correct_change.png for what the admin change page should look like.
This is due to a bug in contrib/admin/helpers.py. The easiest way to fix the bug is to change line 185 of helpers.py from
result_repr = EMPTY_CHANGELIST_VALUE
to
result_repr = display_for_field(value, f)
However, that leaves the if and else branches executing the same statement (kind of weird). I have attached a modified version of helpers.py where that if/elif/else has been rewritten as an if/else.
I have also attached a tarball of an application that demonstrates this bug. The username is "user" and password is "password".
This is my first ticket submission, so I hope I provided everything you need.
Attachments (6)
Change History (15)
by , 14 years ago
| Attachment: | mysite.tar added |
|---|
by , 14 years ago
| Attachment: | original_helpers_correct_select.png added |
|---|
Django admin select page with original helpers.py file (correct)
by , 14 years ago
| Attachment: | original_helpers_correct_select.2.png added |
|---|
Django admin change page with original helpers.py file (incorrect)
by , 14 years ago
| Attachment: | modified_helpers_correct_change.png added |
|---|
Django admin change page with modified helpers.py file (correct)
comment:1 by , 14 years ago
| Cc: | added |
|---|---|
| Has patch: | unset |
Can you provide a diff against trunk of helpers.py instead of the modified file? It's easier to review the changes this way.
by , 14 years ago
| Attachment: | helpers_diff.txt added |
|---|
diff of modified helpers.py file against trunk
comment:2 by , 13 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:3 by , 13 years ago
| Has patch: | set |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
comment:5 by , 13 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
comment:6 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
comment:8 by , 13 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
The added test doesn't work on Oracle, see #19391.
comment:9 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Sorry, didn't mean to reopen this one.
tarball of project that demonstrates bug