Để mở rộng về câu trả lời Yuji của, đây là một số chi tiết cụ thể về trọng change_list_results.html
...
Override changelist_view
như mô tả ở trên trong bước 1, và cũng có thể được mô tả here at djangoproject. Hoặc tự động ghi đè bằng cách đặt trong thư mục thích hợp như trong bước 2 ở trên. (Lưu ý rằng đường dẫn bước 2 được hiển thị ở trên là mô hình cụ thể. Ứng dụng cụ thể sẽ là /admin/<MyAppName>/change_list.html
trong bất kỳ thư mục nào được xác định trong bộ đệm TEMPLATE_DIRS.)
Hoặc (có lẽ dễ dàng hơn) chỉ cần xác định ModelAdmin.change_list_template
như được giải thích here với bất kỳ phát hiện mẫu tên tập tin. (Mặc dù, nếu bạn giữ lại tên change_list.html
, hãy chắc chắn không để gửi tiền trực tiếp vào thư mục /admin
, khác tag extends
sẽ gây ra một đệ quy.)
class MyModelAdmin(admin.ModelAdmin):
change_list_template = 'change_list.html' # definitely not 'admin/change_list.html'
# ...
Trong mẫu change_list.html
của bạn, có tối thiểu
{% extends "admin/change_list.html" %}
{% load i18n admin_static admin_list %}
{% load myapptags %}
{% block result_list %}
{% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}
{% result_list cl %}
{% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}
{% endblock %}
Tạo một gói /<MyAppName>/templatetags
(một thư mục chứa __init__.py
) Với một tập tin tương ứng với thẻ nạp trên
# MyAppName/templatetags/myapptags.py
from django import template
from django.contrib.admin.templatetags.admin_list import result_list
register = template.Library()
register.inclusion_tag('my_change_list_results.html')(result_list)
Sao chép và chỉnh sửa của Django change_list_results.html
(như ví dụ my_change_list_results.html
ở trên) để sử dụng chức năng bổ sung của bạn.
Lưu ý rằng các bước này không bao gồm ngữ cảnh bổ sung cho mẫu, nhưng có thể dễ dàng được mở rộng như vậy. (Lý do của tôi để làm điều này là để thêm các lớp học cho CSS và một hàng đầu <tbody>
mà không được sắp xếp với danh sách kết quả.)
BỔ SUNG:
Để bao gồm bối cảnh thêm, thay đổi mô-đun templatetags của bạn như sau:
# MyAppName/templatetags/myapptags.py
from django import template
from django.contrib.admin.templatetags.admin_list import result_list as admin_list_result_list
def result_list(cl):
mycl = {'myextracontext': 'something extra'}
mycl.update(foo_extra())
mycl.update(admin_list_result_list(cl))
return mycl
register = template.Library()
register.inclusion_tag('my_change_list_results.html')(result_list)
sau đó, giá trị của myextracontext
hoặc bất cứ điều gì foo_extra
lợi nhuận có thể được đưa vào mẫu kết quả của bạn (như ví dụ {{ myextracontext }}
)
Có một số chức năng cho admin.py giúp bạn ghi đè các phương thức thông thường ... [Kiểm tra tại đây] (http://docs.djangoproject.com/en/dev/ref/contrib/admin/ # phương pháp khác) ... Chúng có thể giúp bạn ... – FallenAngel