をDjangoのためにクラスを追加します。 Studioにはフォームがドロップダウンされている必要がありますが、必要なものがまだデータベースに入っていない場合は、ユーザーが新しいStudioに入ることができます。 まず、これを実装する簡単な方法があれば教えてください。は、私は2つのモデルを持っているフォームウィジェットフィールドに
私がやっていることは、スタジオのドロップダウンの横に「+」アイコンを追加することです。これをクリックすると、新しいスタジオのテキストを入力できる新しいフィールドが表示されます。私は、ユーザーが心を変えた場合に、それを再表示するunhidフィールドの隣に " - "ボタンを含めたいと思います。それは私が立ち往生している場所です。
私のフォームは現在、次のようになります。
class SelectWithPlus(forms.Select):
def render(self, name, *args, **kwargs):
html = super(SelectWithPlus, self).render(name, *args, **kwargs)
plus = render_to_string("form/plus.html", {'field': name})
return html+plus
class DeSelectWithX(forms.CharField):
def render(self, name, *args, **kwargs):
html = super(DeSelectWithX, self).render(name, *args, **kwargs)
ex = render_to_string("form/ex.html", {'field': name})
return html+ex
class FilmForm(forms.Form):
required_css_class = 'required'
studio = forms.ModelChoiceField(Studio.objects, widget = SelectWithPlus)
new_studio = forms.CharField(max_length=30, required=False, label = "New Studio Name", widget = DeSelectWithX)
name = forms.CharField(max_length=30, label = "Film Name")
def __init__(self, *args, **kwargs):
super(MdlForm, self).__init__(*args,**kwargs)
self.fields['new_studio'].widget.attrs['class'] = 'hidden_studio_field'
アイデアはスタジオのフィールドは、「+」アイコンのHTMLのビットを追加するウィジェットを持っていることである。
<a
href="JavaScript:void()"
class="add-another"
id="add_id_{{ field }}">
<img src="http://mydbupload.s3.amazonaws.com/icon_addlink.gif" width="10" height="10" Border ="0" alt="Add New {{ field }}"/>
</a>
この「 - 」だから私は同様のを追加したい
<script type="text/javascript">
$(document).ready(function() {
$(".hidden_studio_field").hide();
$('label[for="id_new_studio"]').hide();
});
$(function() {
$('#add_id_studio').click(function() {
$(".hidden_studio_field").show();
$('label[for="id_new_studio"]').show();
});
});
</script>
しかし:クリックすると、それは適切な名前のフィールドを表示するためにjqueryのをトリガーtonをnew_studioフィールドに追加します。私はSelectWithPlusウィジェットを複製しようとしましたが、私が当てはまる1つの問題は、クラス "hidden_studio_field"をそのフィールドに追加するコードをもう使用できなくなることです。 'DeSelectWithX'オブジェクトに属性 'attrs'がありません
短い質問:ウィジェットで定義されたフィールドにCSSタイプのクラスを追加するにはどうすればよいですか?