2012-04-16 31 views
3

我正在使用Django表單進行輸入。不過,我想定製一點。例如,下面的Django的代碼將被翻譯成:如何在Django表單中添加標籤ID

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

https://docs.djangoproject.com/en/dev/ref/forms/widgets/ yes你可以 – 2012-04-16 17:07:00

回答

5

類似的問題在這裏得到解答: 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> 

舊的:(這在某些情況下不起作用 - 請參閱註釋)

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

獲取標籤ID的正確方法是使用form.id_for_label。這種差異很微妙,但是使用auto_id會導致MultiValueField + MultiWidget的bug。 – hannson 2014-02-07 13:11:34

+0

感謝您的澄清。我要編輯帖子。 – darkless 2014-02-18 19:00:55

0
class FormName(forms.ModelForm): 

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