Mặc dù câu trả lời khác là hoàn toàn hợp lệ, tôi nghĩ rằng điều quan trọng là cần lưu ý rằng nó là hoàn toàn không cần thiết phải thêm một nút để có được hành vi như vậy . Bạn có thể sử dụng các tác vụ quản trị, như bạn đã làm cho hành động make_published
.
Đây là lợi thế của việc không đòi hỏi phải ghi đè lên bất kỳ mẫu nào, và do đó ngăn ngừa những rắc rối tiềm năng khi nâng cấp phiên bản django (vì mẫu quản trị viên có thể thay đổi và thay đổi có thể không tương thích với cách bạn đã khắc phục).
import csv
from django.http import HttpResponse
from django.utils import timezone
def export_as_csv(modeladmin, request, queryset):
opts = modeladmin.model._meta
filename = format(timezone.now(), "{app}_{model}-%Y%m%d_%H%M.csv").format(
app=opts.app_label, model=opts.model_name)
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
writer = csv.writer(response)
field_names = [f.get_attname() for f in opts.concrete_fields]
writer.writerow(field_names)
for obj in queryset.only(*field_names):
writer.writerow([str(getattr(obj, f)) for f in field_names])
return response
Hành động quản trị được thực hiện cho việc này, thêm nút tùy chỉnh là một bước gần hơn "quá tùy chỉnh", có nghĩa là đã đến lúc viết chế độ xem của riêng bạn.
Quản trị viên có nhiều móc để tùy chỉnh, nhưng hãy cẩn thận khi cố sử dụng các móc đó một cách độc quyền. Nếu bạn cần cung cấp một giao diện trung tâm xử lý hơn để tóm tắt các chi tiết thực hiện của các bảng và các trường cơ sở dữ liệu, thì có lẽ là lúc để viết các khung nhìn của riêng bạn.
Trích từ introduction paragraph of Django Admin's documentation
Nguồn
2016-07-09 12:43:23
tôi theo dõi cho đến khi phần cuối cùng, mà là url (r "^ tài chính xuất/$) đến từ đâu? –
Liên kết của bạn có hai thuộc tính 'class':' class = "grp-state-focus" class = "addlink" ' – Nick
Cảm ơn bạn, fixedd. – grafa