admin管理员组

文章数量:1279188

I am using Django form for inputs. However, I would like to custom it a little bit. For example the following Django code will be translated into:

#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>

My question is that how to add a label property such as "style" from working from the Django side? Can widget change Django form label property?

Target 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>

I am using Django form for inputs. However, I would like to custom it a little bit. For example the following Django code will be translated into:

#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>

My question is that how to add a label property such as "style" from working from the Django side? Can widget change Django form label property?

Target 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>
Share Improve this question edited Jun 20, 2020 at 9:12 CommunityBot 11 silver badge asked Apr 16, 2012 at 17:03 TTTTTT 4,43413 gold badges77 silver badges129 bronze badges 1
  • docs.djangoproject./en/dev/ref/forms/widgets yes you can – K Z Commented Apr 16, 2012 at 17:07
Add a ment  | 

3 Answers 3

Reset to default 9

Similar problem is answered here: Get the ID of a field widget in a formset . Although it doesn't allow you to customize the ID directly, it uses default (autogenerated) ID

(Short answer) use this in template:

EDIT:

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

old one: (this was not working in some cases - see ments)

<label for="{{ form.my_field.auto_id }}">{{ form.my_field.label }}</label>
class FormName(forms.ModelForm):

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

https://docs.djangoproject./en/dev/ref/forms/widgets/#django.forms.Widget.attrs

本文标签: javascriptHow to add label ID in Django form Stack Overflow