2014-03-02 156 views
8

我想知道的是,如何更改適用於admin.ModelAdmin類的list_display_links中列出項目的URL?我想/admin/contacts/contacts/12345/變成/contacts/12345/修改Django 1.6中「list_display_links」的URL管理員更改列表

我能找到的所有解決方案都相當陳舊,有點複雜,並且希望在頂部做其他事情 - 所以我希望有一些明顯的方法,我錯過了。

(我是種期待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) 
    
  2. Tell Django admin使用您的新ContactsChangeList而不是標準配置:

    class ContactAdmin(admin.ModelAdmin): 
        ... 
        def get_changelist(self, request, **kwargs): 
         return ContactChangeList 
    
0

如果按照亞歷克斯雅科夫列夫的建議,你可能會恢復到原來的執行變更表,其中在舊版本的Django的(1.2不確定)爲:

def url_for_result(self, result): 
    return "%s/" % quote(getattr(result, self.pk_attname))