2012-04-16 13 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/はいできます –

答えて

5

同様の問題は、ここで答えている: Get the ID of a field widget in a formsetを。それはあなたが直接IDをカスタマイズすることはできませんが 、それがデフォルト(自動生成)IDを使用しています

(短い答えは)テンプレートでこれを使用する:

EDIT:

<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

+0

ご清聴ありがとうございます。私は投稿を編集するつもりです。 – darkless

-1
+0

返信ありがとうございます。私はwidget = forms.Select(attrs = {'style': 'display:none'})を自分のコードに追加しようとしましたが、ラベル部分ではなくドロップダウンメニューしか隠れません。だから私の質問は、ジャンゴにはフォームがありますか?ラベルやそれに類するもの? –

0
class FormName(forms.ModelForm): 

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