Opened 14 years ago

Closed 14 years ago

Last modified 12 years ago

#13004 closed (fixed)

The new get_readonly_fields() method of the ModelAdmin breaks with many to many fields

Reported by: hejsan Owned by: nobody
Component: contrib.admin Version: 1.2-beta
Severity: Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

This breaks if a ManyToMany field is specified as readonly.

This is because the contents() function that is called in the fieldset.html template tries to display the value of the field but gets a ValueError if it is a ManyToManyField because they can't be used: "[Model name] instance needs to have a primary key value before a many-to-many relationship can be used"

Just need to add ValueError to the catch as seen in the patch I attached, called catch_value_error.diff.
Hope it gets merged before beta 2.

Attachments (2)

catch_value_error.diff (609 bytes ) - added by hejsan 14 years ago.
Very simple fix, just catch one more Exception
catch_error_with_test-12818.diff (2.2 KB ) - added by Mark Lavin 14 years ago.
Added a basic regression test along with the orginal patch.

Download all attachments as: .zip

Change History (6)

by hejsan, 14 years ago

Attachment: catch_value_error.diff added

Very simple fix, just catch one more Exception

comment:1 by hejsan, 14 years ago

Component: UncategorizedContrib apps
Has patch: set
Version: 1.11.2-beta

comment:2 by Russell Keith-Magee, 14 years ago

Component: Contrib appsdjango.contrib.admin
milestone: 1.2
Triage Stage: UnreviewedAccepted

by Mark Lavin, 14 years ago

Added a basic regression test along with the orginal patch.

comment:3 by Karen Tracey, 14 years ago

Resolution: fixed
Status: newclosed

(In [12827]) Fixed #13004: Ensure the add page for a model with a ManyToManyField specified
in readonly_fields does not raise an exception. Thanks hejsan, mlavin, copelco.

comment:4 by Jacob, 12 years ago

milestone: 1.2

Milestone 1.2 deleted

Note: See TracTickets for help on using tickets.
Back to Top