On one of my sites i have a bunch of different models for various content resources, e.g. articles, videos and podcasts. For admins I wanted to add an "edit this item" link to the menu when browsing the site. Pretty easy: check permissions and add a link to the admin.
Now, ideally i'd like the user to be redirected back to the main site on
save, instead of to the default django admin list view. After an initial
solution that involved copying the entire django code for
I had a much better idea. I was already appending a
?source=main to my links to the admin to distinguish from the links from
within the admin itself (for which i want the default redirect behaviour).
from django.http import HttpResponseRedirect class EntryAdmin(admin.ModelAdmin): def response_change(self, request, obj): """ if user clicked "edit this page", return back to main site """ response = super(EntryAdmin, self).response_change(request, obj) if (isinstance(response, HttpResponseRedirect) and response['location'] == '../' and request.GET.get('source') == 'main'): response['location'] = obj.get_absolute_url() return response