2009-08-21 85 views
6

我正在爲使用標準更改列表作爲臨時階段的Django管理界面創建一些自定義視圖。這工作正常,除了變更列表頁面H1是'Select object to change'。 「更改」不是用戶在我的自定義視圖中執行的操作的正確動詞。Alter Django管理更改列表標題文本

我發現控制更改列表頁面(change_list.htmlchange_list_results.html)的佈局的django.contrib.admin模板,但我無法找到標題的提供位置。我猜這是一個通過某個視圖傳入的變量嗎?

如何用較少誤導的方式覆蓋此文本'選擇對象'而不是'選擇要更改的對象'?我可以在所有更改列表視圖中更改它,而不僅僅是我試圖自定義的特定視圖;但我更喜歡解決方案是重寫,而不是修改django.contrib.admin代碼(如果可能)。

更新:我發現了負責更改列表的視圖,它是main.pydjango\contrib\admin\views。第69行的變量是self.title(Django 1.0)。我已經來達到的,我通過編輯這一行尋找結果

self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name)) 

閱讀

self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s') % force_unicode(self.opts.verbose_name)) 

我還是很感興趣地聽到實現這一目標並不相同的結果更好的辦法涉及黑客django.contrib.admin代碼 - 它看起來像已經有一個選項,讓我喜歡它的方式,但我不知道如何觸發該標題?

回答

2

已有門票ChangeList定製:http://code.djangoproject.com/ticket/9749。這將能夠改變管理應用程序的許多其他方面。不幸的是,沒有乾淨的方式來實現你的目標。

+0

嗯,該補丁看起來很有前途。讓我們希望它通過它。不幸的是,它現在對我沒什麼好處,因爲我試圖堅持使用產品代碼而不是使用SVN。感謝您的加入 - 看起來我只需要使用黑客,並小心記錄我的更改以供將來升級。如果它通過我認爲的升級重新設置爲前面的代碼,那麼它是非關鍵的。 – 2009-08-21 15:07:02

0

Django的當前版本:

class CustomChangeList(django.contrib.admin.views.main.ChangeList): 
    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.title = 'My Cool Title' 

class MyAdmin(ModelAdmin): 
    def get_changelist(self, request, **kwargs): 
     return CustomChangeList 
6

不知道是否仍然相關,但另一種方式來做到這一點會被傳遞extra_contentchangelist_view方法。例如:

from django.contrib import admin 

class MyCustomAdmin(admin.ModelAdmin): 

    def changelist_view(self, request, extra_context=None): 
     extra_context = {'title': 'Change this for a custom title.'} 
     return super(MyCustomAdmin, self).changelist_view(request, extra_context=extra_context)