2009-08-21 51 views
6

Tôi đang tạo một số chế độ xem tùy chỉnh cho giao diện quản trị Django sử dụng danh sách thay đổi tiêu chuẩn làm giai đoạn tạm thời. Điều này hoạt động tốt, ngoài thực tế, trang danh sách thay đổi H1 là 'Chọn đối tượng cần thay đổi'. 'Thay đổi' không phải là động từ thích hợp cho hành động mà người dùng sẽ thực hiện trong chế độ xem tùy chỉnh của tôi.Alter Django admin thay đổi danh sách tiêu đề văn bản

Tôi đã tìm thấy các mẫu django.contrib.admin kiểm soát bố cục của các trang danh sách thay đổi (change_list.htmlchange_list_results.html) nhưng tôi không thể tìm thấy tiêu đề được cung cấp từ đâu. Tôi đoán nó là một biến được thông qua bởi một cái nhìn một nơi nào đó?

Làm cách nào tôi có thể ghi đè văn bản này bằng nội dung nào đó ít gây nhầm lẫn hơn, ví dụ: 'Chọn đối tượng' thay vì 'Chọn đối tượng cần thay đổi'? Tôi đồng ý với việc thay đổi nó trên tất cả các chế độ xem danh sách thay đổi, không chỉ các chế độ xem cụ thể mà tôi đang cố gắng tùy chỉnh; nhưng tôi muốn một giải pháp đó là một ghi đè như trái ngược với một sửa đổi của mã django.contrib.admin nếu có thể.

Cập nhật: Tôi đã tìm thấy chế độ xem chịu trách nhiệm về danh sách thay đổi, đó là main.py trong django\contrib\admin\views. Biến là self.title trên dòng 69 (Django 1.0). Tôi đã acheived kết quả Tôi đang tìm kiếm bằng cách chỉnh sửa dòng này

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)) 

để đọc

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)) 

tôi vẫn muốn được thực sự quan tâm để nghe một cách tốt hơn để đạt được kết quả tương tự mà không làm liên quan đến hack mã django.contrib.admin - có vẻ như đã có một tùy chọn để có tiêu đề theo cách tôi muốn, nhưng tôi không chắc chắn làm thế nào để kích hoạt nó?

Trả lời

2

Đã có vé cho ChangeList tùy chỉnh: http://code.djangoproject.com/ticket/9749. Điều này sẽ cung cấp khả năng thay đổi nhiều khía cạnh bổ sung của ứng dụng quản trị. Thật không may là không có cách nào sạch sẽ để đạt được mục tiêu của bạn.

+0

Hmm, bản vá đó trông khá hứa hẹn. Hãy hy vọng nó đi nó. Nó doen't làm cho tôi rất nhiều lúc này không may, như tôi đang cố gắng để dính vào mã sản xuất hơn là sử dụng SVN. Cảm ơn bạn đã cân nhắc - có vẻ như tôi sẽ chỉ phải sử dụng bản hack và cẩn thận ghi lại các thay đổi của tôi cho các bản nâng cấp trong tương lai. Nó không quan trọng nếu nó được thiết lập lại mã trước đó bằng cách nâng cấp tôi giả sử. –

0

Đối với phiên bản hiện tại của 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

Không chắc chắn nếu vẫn có liên quan, nhưng một cách khác để làm điều này sẽ được đi qua các extra_content cho phương pháp changelist_view. Ví dụ:

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) 
Các vấn đề liên quan