我想知道的是如何更改应用于list_display_links类的admin.ModelAdmin中列出的项目的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而不是标准的ojit_code:
    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/

    10-16 19:25