如何在Django表单中添加标签ID

4

我正在使用Django表单进行输入。但是,我想稍微自定义一下它。例如,以下Django代码将被翻译为:

#Django code

aerial_size_dist = forms.ChoiceField(initial='Very Fine to Fine') 

#Translated HTML  
<tr><th><label for="id_aerial_size_dist">Aerial size dist:</label></th><td><select name="aerial_size_dist" id="id_aerial_size_dist"></select></td></tr>

我的问题是如何从Django侧添加类似“style”之类的标签属性?小部件可以更改Django表单的标签属性吗?

目标HTML

<tr><th><label for="id_aerial_size_dist" style="display:none;">Aerial size dist:</label></th><td><select name="aerial_size_dist" id="id_aerial_size_dist"></select></td></tr>

https://docs.djangoproject.com/en/dev/ref/forms/widgets/ 是的,你可以。 - K Z
3个回答

9

这里有一个类似的问题的解答:获取表单集中字段小部件的ID,虽然它不能直接定制ID,但可以使用默认(自动生成)的ID。

(简短回答) 在模板中使用以下代码:

编辑:

<label for="{{ form.my_field.id_for_label }}">{{ form.my_field.label }}</label>

旧版:(在某些情况下无法正常工作-请参见评论)


<label for="{{ form.my_field.auto_id }}">{{ form.my_field.label }}</label>

1
获取标签ID的正确方法是使用form.id_for_label。虽然差别微妙,但使用auto_id会导致MultiValueField+MultiWidget出现错误。 - hannson

1
class FormName(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        super(FormName, self).__init__(*args, **kwargs)
        self.fields['field_name'].widget.attrs['style'] = '...'

-1

谢谢回复。我已尝试将widget=forms.Select(attrs={'style':'display:none'})添加到我的代码中,但它只隐藏了下拉菜单,而不是标签部分。所以我的问题是,Django是否有form.label或类似的东西? - TTT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接