在Django 1.6管理员更改列表中修改"list_display_links"的URL

Jon*_*nts 8 python django django-admin

我想知道的是我如何改变这种套用至所列项目的网址是什么list_display_links的的admin.ModelAdmin课?

更具体地说,我想/admin/contacts/contacts/12345/成为/contacts/12345/.

我能找到的所有解决方案都相当陈旧,有些复杂,并且倾向于在顶部做其他事情 - 所以我希望有一些显而易见的方法让我失踪.

(我期待list_display_link_url(或类似)存在超越ModelAdmin...)

小智 6

  1. 覆盖标准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)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 告诉Django管理员使用新的ContactsChangeList而不是标准的:

    class ContactAdmin(admin.ModelAdmin):  
        ...  
        def get_changelist(self, request, **kwargs):  
            return ContactChangeList
    
    Run Code Online (Sandbox Code Playgroud)