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)
如果使用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)
或者,您可以单独循环隐藏和可见字段,并省略隐藏字段的标签.