如何在自定义django表单中隐藏django标签?

Har*_*het 7 python forms django widget

我有一个自定义表单,创建一个字段的隐藏输入:

class MPForm( forms.ModelForm ):
    def __init__( self, *args, **kwargs ):
        super(MPForm, self).__init__( *args, **kwargs )
        self.fields['mp_e'].label = "" #the trick :)

class Meta:
    model = MeasurementPoint
    widgets = { 'mp_e': forms.HiddenInput()  }
    exclude = ('mp_order') 
Run Code Online (Sandbox Code Playgroud)

我必须这个小技巧来"隐藏"标签,但我想要做的是将其从表单中删除.我创建这样的表单:

forms.MPForm()
Run Code Online (Sandbox Code Playgroud)

Joh*_*yes 16

我不建议删除标签,因为它使表单无法访问.您可以在字段中添加自定义CSS类,并在CSS 中使该类不可见.

编辑

我错过了隐藏的输入,因此无需担心可访问性.

您可以直接在模板中呈现表单字段:

<form ...>
    {% for field in form.hidden_fields %}
        {{ field }}
    {% endfor %}

    {% for field in form.visible_fields %}
        {{ field.label }} {{ field }}
    {% endfor %}
</form>
Run Code Online (Sandbox Code Playgroud)


小智 13

现在,(我的django版本是2.1.4),可以这样解决->编辑forms.py文件:

password = forms.CharField(label=False)
Run Code Online (Sandbox Code Playgroud)


Ala*_*air 5

如果使用form.as_por form.as_table方法,Django不应该显示隐藏字段的标签,因此无需更改__init__方法中的标签.

{{ form.as_table }}
Run Code Online (Sandbox Code Playgroud)

如果要自定义表单模板,则可以使用该field.is_hidden属性检查该字段是否已隐藏.

{% if field.is_hidden %}
   {# Don't render label #}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

或者,您可以单独循环隐藏和可见字段,并省略隐藏字段的标签.