반응형
Django 관리자의 필드에 클릭 가능한 링크를 추가하는 방법은 무엇입니까?
이 admin.py가 있습니다.
class LawyerAdmin(admin.ModelAdmin):
fieldsets = [
('Name', {'fields': ['last', 'first', 'firm_name', 'firm_url', 'school', 'year_graduated']}),
]
list_display = ('last', 'first', 'school', 'year_graduated', 'firm_name', 'firm_url')
list_filter = ['school', 'year_graduated']
search_fields = ['last', 'school', 'firm_name']
그리고 필드에 나열된 각 URL로 "firm_url"필드를 클릭 할 수 있도록 만들고 싶습니다. 어떻게 할 수 있습니까? 감사합니다.
링크를 HTML로 반환하는 LawyerAdmin 클래스에서 사용자 지정 메서드를 정의합니다.
def show_firm_url(self, obj):
return '<a href="%s">%s</a>' % (obj.firm_url, obj.firm_url)
show_firm_url.allow_tags = True
설명서를 참조하십시오 .
format_html
유틸리티를 사용하십시오 . 그러면 매개 변수에서 모든 html이 이스케이프되고 문자열이 템플릿에서 사용하기에 안전한 것으로 표시됩니다. allow_tags
방법 속성은 장고 1.9에서 사용되지.
from django.utils.html import format_html
class LawyerAdmin(admin.ModelAdmin):
list_display = ['show_firm_url', ...]
...
def show_firm_url(self, obj):
return format_html("<a href='{url}'>{url}</a>", url=obj.firm_url)
show_firm_url.short_description = "Firm URL"
이제 관리자 사용자는 다음과 같은 경우에도 안전합니다.
firm_url == 'http://a.aa/<script>eval(...);</script>'
자세한 내용 은 설명서 를 참조하십시오.
추가 show_firm_url
로list_display
하지만 내 모델에 지정된 텍스트 표시를 무시하고 열 머리글에 "show firm url"을 표시합니다.
short_description 속성을 할당하여 변경할 수 있습니다.
show_firm_url.short_description = "Firm URL"
원하는 경우 모델에서 처리 할 수 있습니다.
models.py에서 :
class Foo(models.Model):
...
def full_url(self):
url = 'http://google.com'
from django.utils.html import format_html
return format_html("<a href='%s'>%s</a>" % (url, url))
admin.py :
list_display = ('full_url', ... )
참조 URL : https://stackoverflow.com/questions/1949248/how-to-add-clickable-links-to-a-field-in-django-admin
반응형
'programing' 카테고리의 다른 글
smartgit "git-am is in progress"리베이스 (0) | 2021.01.17 |
---|---|
데이터베이스가 QuerySet.dates ()에서 잘못된 값을 반환했습니다. (0) | 2021.01.17 |
작업을 위해 여러 스레드를 생성 한 다음 모두 완료 될 때까지 기다립니다. (0) | 2021.01.17 |
반투명 벤 다이어그램 비례 및 색상 음영 (0) | 2021.01.17 |
배열에 문자열이 있는지 확인하는 방법 (0) | 2021.01.17 |