#14803 closed (fixed)
ModelFormMixing's handling of "success_url" is inconsistent with old generic view behaviour
Reported by: | Gabriel Grant | Owned by: | Gabriel Grant |
---|---|---|---|
Component: | Generic views | Version: | dev |
Severity: | Keywords: | ||
Cc: | 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
Handling of "success_url" in ModelFormMixing seems to be inconsistent with how "get_absolute_url" is handled in views.generic.create_update.redirect()
In old generic views, the url could be a format string into which the object's fields would be interpolated. But that doesn't happed in ModelFormMixin: form_valid() just redirects to the result of get_success_url() (which doesn't do the interpolation)
This inconsistency should be dealt with by either:
- documenting the discrepency in here (presumably with the suggestion that the reader override the "get_success_url()" method to implement the interpolation)
- patching ModelFormMixin.get_success_url() to be consistent with old generic view handling and document the behaviour here
I prefer the latter, but the behaviour change could be a design decision (which I'm certainly not qualified to override :). Let me know, and I can prepare a patch.
Also, as an aside, it seems that redirecting back to the POSTed form would be a better last-resort, rather than throwing an ImproperlyConfigured error.
Comments?
Attachments (1)
Change History (5)
by , 14 years ago
Attachment: | 14803.2.diff added |
---|
comment:1 by , 14 years ago
Has patch: | set |
---|
comment:2 by , 14 years ago
Triage Stage: | Unreviewed → Ready for checkin |
---|
Patch looks good, mod some minor PEP8 stuff that can easily get cleaned up prior to commit.
As for the aside -- sounds like a good idea to me, but it needs a separate ticket, and a patch that implements a get_absolute_url() solution that defers to success_url if it is provided.
comment:3 by , 14 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
patch implements solution #2. Includes tests & docs