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

全局更改django表单中帮助文本的行为,django,Django,我想利用django中的默认帮助文本,但我不喜欢它的处理方式。我想要: <tr><label>djangolab</label><input>djangoinput</input><span>djangohelp></span><span class='onhovershowhelp'>?</span> djangolabdjangInputdjangHelp>? 默认情况下不提

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

<tr><label>djangolab</label><input>djangoinput</input><span>djangohelp></span><span class='onhovershowhelp'>?</span>
djangolabdjangInputdjangHelp>?
默认情况下不提供最后一个元素。悬停在“?”上的CSS将帮助文本范围的可见性从隐藏更改为可见

我希望事情能够开箱即用,这样{{form}}将按照我对任何模型表单的要求显示。因此,我想:

  • 默认情况下,帮助文本包含一些属性(z=1,隐藏)
  • 将另一个跨距添加到表单行

  • 我不想对每个模型表单/字段等都这样做,在模板中使用循环并手动构建此等。

    明白了。让所有表单都继承如下内容(即
    \u html\u output
    调用是直接从django的源代码中获取的隐藏实现细节):


    您想要一个字段的所有形式的单个帮助文本吗?@Arpitolanki Hi!不,我想保留django已经提供的所有默认文本,保持原样。我只想改变一下渲染器。我认为在我所有模型继承自的泛型ModelForm类中重写“to_table”可能是一条可行之路,我正在着手这方面的工作,但如果有人找到更好的解决方案,我很乐意看到。不完全确定,但您可以在表单中创建一个init函数,然后调用super,然后您可以更新如下属性
    self.fields['myfield'].widget.attrs.update({'class':'myfieldclass})
    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
    
    .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;
    }