【问题标题】:In Django, when a UrlField is made read only, it prevents it from rendering as a clickable link. Why?在 Django 中,当 UrlField 设置为只读时,它会阻止它呈现为可点击的链接。为什么?
【发布时间】:2016-06-13 00:55:59
【问题描述】:
在 Django(我们目前使用的是 1.9)中,当我们向模型添加 UrlField 时,管理站点会正确地将 UrlField 值呈现为编辑视图上的可点击链接。
如果我们将此UrlField 标记为只读(通过ModelAdmin readonly_fields 属性),则该值将显示为不可点击的纯文本。
- 这种行为的原因是什么?
- 有没有办法在不更改相关表单字段的小部件的情况下解决它?
【问题讨论】:
标签:
django
django-admin
django-widget
【解决方案1】:
我认为这只是 readonly_fields 显示原始内容(使用__str__() 方法)而没有任何小部件。
要解决这个问题,你可以这样做:
class MyAdmin (ModelAdmin):
readonly_fields = ['myurl_link']
def myurl_link(self, instance):
return format_html('<a href="{url}" target=_blank>{url}</a>', url=instance.myurl)
myurl_link.short_description = _("Website")