修改Django 1.6管理更改列表中的“list_display_links”URL
我想知道的是,如何更改在 admin.ModelAdmin
类的 list_display_links
中应用的链接地址?
具体来说,我希望 /admin/contacts/contacts/12345/
变成 /contacts/12345/
。
我找到的所有解决方案都比较老旧,过程也有点复杂,而且都是为了实现其他功能,所以我希望能有更简单的方法我没想到。
(我本来以为会有类似 list_display_link_url
这样的东西可以在 ModelAdmin
中重写……)
2 个回答
0
如果你按照Alex Yakovlev的建议,可以回到ChangeList的原始实现。在旧版本的Django中(至少是1.2版本),它是这样的:
def url_for_result(self, result):
return "%s/" % quote(getattr(result, self.pk_attname))
6
重写标准的
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