Tôi có giao diện quản trị django và trong danh sách mô hình, tôi muốn cột tùy chỉnh sẽ là siêu liên kết sử dụng một trong các giá trị trường. Về cơ bản, một trong các trường của mô hình là url và tôi muốn cột có URL đó trong siêu liên kết có thể nhấp. Liên kết này sẽ cần có URL bổ sung được thêm vào nó làm đường dẫn tương đối của nó trong trường mô hình.Làm cách nào để thêm cột tùy chỉnh có siêu kết nối trong giao diện quản trị django?
Trả lời
Xác định phương thức trong lớp ModelAdmin của bạn và đặt thuộc tính allow_tags
thành True
. Điều này sẽ cho phép phương thức trả lại HTML không thoát để hiển thị trong cột.
Sau đó liệt kê danh sách dưới dạng mục nhập trong thuộc tính ModelAdmin.list_display.
Ví dụ:
class YourModelAdmin(admin.ModelAdmin):
list_display = ('my_url_field',)
def my_url_field(self, obj):
return '<a href="%s%s">%s</a>' % ('http://url-to-prepend.com/', obj.url_field, obj.url_field)
my_url_field.allow_tags = True
my_url_field.short_description = 'Column description'
Xem tài liệu cho ModelAdmin.list_display để biết thêm chi tiết.
Tôi phát hiện ra một ngày khác mà bạn thực sự không cần thẻ 'a', vì quản trị viên Django sẽ tự động biến URL thành siêu liên kết. Tôi không phải ở máy tính của tôi, vì vậy tôi có thể sai. Trong trường hợp của tôi, tôi không cần phải đặt 'allow_tags'. Tôi cũng đã tạo ra một hàm 'get_url()' trên mô hình của tôi, trái ngược với mô hình quản trị của tôi - nhưng nó khá tầm thường. Tuy nhiên, cách của bạn là tốt nhất nếu chúng ta muốn mở liên kết trong một cửa sổ mới với 'target = _blank' - Hy vọng điều này là hữu ích. –
Sử dụng tiện ích format_html
. Điều này sẽ thoát khỏi bất kỳ html từ các tham số và đánh dấu chuỗi là an toàn để sử dụng trong các mẫu. Thuộc tính phương thức allow_tags
đã không được dùng nữa trong Django 1.9.
from django.utils.html import format_html
class MyModelAdmin(admin.ModelAdmin):
list_display = ['show_url', ...]
...
def show_url(self, obj):
return format_html("<a href='http://pre.com{0}'>{0}</a>", obj.url)
Bây giờ người dùng quản trị của bạn được an toàn ngay cả trong trường hợp:
url == '<script>eval(...);</script>'
Xem the documentation để biết thêm.
- 1. Thêm hành động tùy chỉnh vào đối tượng nội tuyến Django trên giao diện quản trị
- 2. Làm cách nào để thêm tiện ích quản trị nội tuyến tùy chỉnh trong Django?
- 3. Django quản trị tùy chỉnh javascript để
- 4. Thêm tập lệnh jQuery vào giao diện quản trị Django
- 5. cột tùy chỉnh sử dụng Django quản trị
- 6. Trong giao diện quản trị Django, có cách nào để sao chép một mục không?
- 7. Quản trị viên Django có khó tùy chỉnh không?
- 8. Làm cách nào để tùy chỉnh trang Quản trị viên người dùng trong Django CRUD?
- 9. django: cách thêm liên kết trang chủ vào quản trị
- 10. Hiển thị hàng con trong giao diện quản trị Django
- 11. tùy chỉnh bảng quản trị django?
- 12. Làm cách nào để tạo trang tùy chỉnh cho quản trị django?
- 13. Làm cách nào để thêm đối tượng tùy chỉnh trong Trình tạo giao diện?
- 14. Giao diện quản trị Django inline vị trí
- 15. Làm cách nào để hiển thị danh sách tra cứu ngược ForeignKey trong giao diện quản trị DJango?
- 16. Thêm cột siêu kết nối cho điều khiển DataGrid Winforms
- 17. Giao diện quản trị cho SQLAlchemy?
- 18. Quản trị Django - Chế độ xem thay đổi tùy chỉnh
- 19. Quản trị Django - Làm cách nào tôi có thể thêm dấu cộng màu xanh lục cho trường Nhiều người trong biểu mẫu quản trị tùy chỉnh
- 20. Làm cách nào để thêm trường tùy chỉnh vào InlineFormsets?
- 21. Django quản trị listview Customize Tên Cột
- 22. Bạn có thể thêm thông số vào hành động quản trị tùy chỉnh Django không?
- 23. Tùy chỉnh quản trị Django TabularInline trường mặc định
- 24. Làm cách nào để sử dụng tùy chọn lệnh quản lý tùy chỉnh Django?
- 25. Chế độ xem tùy chỉnh Django vào trang quản trị
- 26. Quản trị viên Django, thông báo lỗi tùy chỉnh?
- 27. Django cách chuyển biến tùy chỉnh thành ngữ cảnh để sử dụng trong mẫu quản trị tùy chỉnh?
- 28. Làm thế nào để thêm siêu liên kết trong cột của bảng SWT?
- 29. Giao diện 'quản trị' riêng biệt cho các loại người dùng khác nhau trong django
- 30. Thêm Xác thực Mẫu Django Tùy chỉnh
Bản sao có thể có của [Cách thêm liên kết có thể nhấp vào một trường trong quản trị Django?] (Http://stackoverflow.com/questions/1949248/how-to-add-clickable-links-to-a-field-in -django-admin) – Louis