在Django中,当UrlField成为只读时,它会阻止它作为可点击链接呈现。为什么?

时间:2016-02-29 20:17:36

标签: django django-admin django-widget

在Django中(我们目前使用的是1.9),当我们向模型添加UrlField时,管理站点会正确地将UrlField值呈现为编辑视图上的可点击链接。

如果我们将此UrlField标记为只读(通过ModelAdmin readonly_fields属性),则该值将显示为不可点击的纯文本。

  • 这种行为的理由是什么?
  • 有没有办法在不更改关联表单字段的窗口小部件的情况下解决它?

1 个答案:

答案 0 :(得分:2)

我认为只是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")