【问题标题】:How to add label ID in Django form如何在 Django 表单中添加标签 ID
【发布时间】:2012-04-28 00:56:04
【问题描述】:

我正在使用 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 端添加标签属性,例如“样式”?小部件可以更改 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>

【问题讨论】:

标签: javascript html django django-forms


【解决方案1】:

这里回答了类似的问题: Get the ID of a field widget in a formset 。 虽然它不允许您直接自定义 ID,但它使用默认(自动生成)ID

(简答)在模板中使用这个:

编辑:

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

旧的:(在某些情况下这不起作用 - 请参阅 cmets)

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

【讨论】:

  • 获取标签 id 的正确方法是使用 form.id_for_label。区别很细微,但使用 auto_id 会导致 MultiValueField+MultiWidget 出现错误。
【解决方案2】:
class FormName(forms.ModelForm):

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

【讨论】:

    【解决方案3】:

    【讨论】:

    • 感谢您的回复。我试图将 widget=forms.Select(attrs={'style':'display:none'}) 添加到我的代码中,但它只隐藏下拉菜单,而不是标签部分。所以我的问题是 Django 有没有 form.label 或类似的东西?
    猜你喜欢
    • 2020-05-11
    • 2022-10-04
    • 1970-01-01
    • 2014-12-03
    • 2016-09-20
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多