全局更改django表单中帮助文本的行为

时间:2017-06-21 14:39:18

标签: django

我想利用django中的默认帮助文本,但我不喜欢它的处理方式。我希望:

<tr><label>djangolab</label><input>djangoinput</input><span>djangohelp></span><span class='onhovershowhelp'>?</span>

默认情况下不提供最后一个元素。 CSS悬停在“?”上将隐藏帮助文本范​​围的可见性从隐藏更改为可见。

我希望开箱即用,所以'{{form}}'会显示我想要的任何模型表单。所以我想全球化:

  1. 默认情况下帮助文本范​​围包含一些属性(z = 1,隐藏)
  2. 添加另一个范围以形成行。
  3. 我不想为每个模型表单/字段等执行此操作,在模板中使用循环并手动构建此类等...

1 个答案:

答案 0 :(得分:0)

知道了。所有表单都继承了这样的内容(_html_output调用是直接从django源代码中获取的隐藏实现细节):

import django.forms

class GenericForm(django.forms.ModelForm):
    def as_table(self):
        return self._html_output(
            normal_row='<tr%(html_class_attr)s><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>',
            error_row='<tr><td colspan="2">%s</td></tr>',
            row_ender='</td></tr>',
            help_text_html='<a class="helptext">?<span>%s</span></a>',
            errors_on_separate_row=False)
        return html

还有一些CSS伴随着这个:

.helptext {
    margin: 5px;
    color: blue;
}

a.helptext span {
    display:none;
    width: 30em;
    text-align: justify;
    z-index:1;
}

a.helptext:hover span {
    display:inline;
    position:absolute;
    background:#ffffff;
    border:1px solid #cccccc;
    color:#6c6c6c;
}