diff options
| author | Julien Phalip <jphalip@gmail.com> | 2012-12-30 21:33:21 -0800 |
|---|---|---|
| committer | Julien Phalip <jphalip@gmail.com> | 2012-12-30 21:33:21 -0800 |
| commit | cee40c7d79930ff42bde4730f43e68a624e47b0f (patch) | |
| tree | 3e25c340c81f26eeb5f1ace204382d00c1824480 /django | |
| parent | f80a1934cdb465c70ecc215fdf867e555a670623 (diff) | |
Added further flexibility to ModelAdmin for controlling post-save redirections.
Refs #19505.
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/options.py | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index b0c2c4dcf9..8e0aaccc86 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -1,6 +1,5 @@ import copy from functools import update_wrapper, partial -import warnings from django import forms from django.conf import settings @@ -824,7 +823,7 @@ class ModelAdmin(BaseModelAdmin): else: msg = _('The %(name)s "%(obj)s" was added successfully.') % msg_dict self.message_user(request, msg) - return self.response_post_save(request, obj) + return self.response_post_save_add(request, obj) def response_change(self, request, obj): """ @@ -858,13 +857,27 @@ class ModelAdmin(BaseModelAdmin): else: msg = _('The %(name)s "%(obj)s" was changed successfully.') % msg_dict self.message_user(request, msg) - return self.response_post_save(request, obj) + return self.response_post_save_change(request, obj) - def response_post_save(self, request, obj): + def response_post_save_add(self, request, obj): """ - Figure out where to redirect after the 'Save' button has been pressed. - If the user has change permission, redirect to the change-list page for - this object. Otherwise, redirect to the admin index. + Figure out where to redirect after the 'Save' button has been pressed + when adding a new object. + """ + opts = self.model._meta + if self.has_change_permission(request, None): + post_url = reverse('admin:%s_%s_changelist' % + (opts.app_label, opts.module_name), + current_app=self.admin_site.name) + else: + post_url = reverse('admin:index', + current_app=self.admin_site.name) + return HttpResponseRedirect(post_url) + + def response_post_save_change(self, request, obj): + """ + Figure out where to redirect after the 'Save' button has been pressed + when editing an existing object. """ opts = self.model._meta if self.has_change_permission(request, None): |
