我想知道的是如何更改应用于 admin.ModelAdmin
类的 list_display_links
中列出的项目的 URL?
更具体地说,我希望 /admin/contacts/contacts/12345/
成为 /contacts/12345/
。
我能找到的所有解决方案都很陈旧,有些令人费解,而且是为了在上面做一些其他事情——所以我希望我能找到一些明显的方法。
(我有点期待 list_display_link_url
(或类似的)存在以覆盖 ModelAdmin
...)
最佳答案
覆盖标准
ChangeList
(在您的admin.py
中):from django.contrib.admin.views.main import ChangeList class ContactChangeList(ChangeList): def url_for_result(self, result): pk = getattr(result, self.pk_attname) # YOU PROBABLY WANT TO CHANGE NEXT LINES! return reverse('admin:%s_%s_change' % (self.opts.app_label, self.opts.model_name), args=(quote(pk),), current_app=self.model_admin.admin_site.name)
告诉 Django 管理员使用新的
ContactsChangeList
而不是标准的:class ContactAdmin(admin.ModelAdmin): ... def get_changelist(self, request, **kwargs): return ContactChangeList
关于python - 在 Django 1.6 管理更改列表中修改 "list_display_links"的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128020/