Skip to content

Instantly share code, notes, and snippets.

@hovi
Created October 30, 2019 12:52
Show Gist options
  • Save hovi/1dd8f7c454461a7c7b77ad27de4c2b7c to your computer and use it in GitHub Desktop.
Save hovi/1dd8f7c454461a7c7b77ad27de4c2b7c to your computer and use it in GitHub Desktop.
change changelist url in django admin as simple as possible (usable with proxies)
from urllib import urlencode
from django.contrib.admin.views.main import ChangeList
from django.urls import reverse
def change_admin_url(model, **kwargs):
class CustomModelChangeList(ChangeList):
def url_for_result(self, obj):
return model_change_url_only(obj, model._meta, **kwargs)
changelist = CustomModelChangeList
changelist.model = model
return changelist
def model_change_url_only(object, meta=None, **kwargs):
meta = meta or object._meta
return reverse('admin:{app}_{model}_change'.format(app=meta.app_label, model=meta.model_name),
args=[object.pk]) + parameters(**kwargs)
def parameters(**kwargs):
if not kwargs:
return ""
return "?" + urlencode(kwargs)
"""
# example usage in django admin class (Member is model class that you want to lead instead of original model used for the admin)
def get_changelist(self, request, **kwargs):
return change_admin_url(Member)
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment