2012-04-07 9 views
0

私はキャンペーンでの追加と削除のためにアプリで作業しているインラインフォームセットを持っていますが、 "display"フィールドがあり、100個の登録ディスプレイがあれば、 。そこでセクターを選択して下の画面を表示するjqueryでサイドバーを作成しました。アイデアは、Addボタン(Adicionar)をクリックし、フィールド "display"が埋められたインラインディスプレイを作成することです。 フィールド "display"がサイドバーの選択されたディスプレイで満たされるインラインフォームセットを作成するにはどうすればよいですか?オブジェクトIDを持つJQueryのサイドバーからインラインフォームセットを作成

どのようにイメージがある:私が持っているサイドバー http://postimage.org/image/3qp6bq5f9/


list.append('<ul><li><input class="list-display" type="hidden" value="'+d.pk+'">  '+d.fields['nome']+' | Janelas: '+d.fields['janelas']+'\ 
       <a class="btn btn-mini" onclick="addInlineFormset('+d.pk+');"  value="Adicionar"><i class="icon-plus-sign"></i> Adicionar</a></li></ul>'); 

"d.pkは" 選択したディスプレイのIDです。

私はまだこのインラインを作成しようとしています。 は私がform.htmlに含めるを置く:

function addJanela(id) { 
var object_id = id; 
var url = '/project/campanha/get_formInline/'+object_id+'/'; 
$.ajax({ 
    type: 'get', 
    url: url, 
    success: function(formset){ 
     var janela = $('#janela');   
      janela.append(formset); 
      return false; 
    }, 
}); 
} 

私のviews.py:

def get_formInline(request, object_id): 
display = Display.objects.get(pk=object_id) 
status = Status.objects.filter(nome__exact='Vendido') 
initial=[{'postais' : 45, 'status': status,'display': display,}] 
JanelaFormSet = inlineformset_factory(Campanha, Janela, extra=1) 
formset = JanelaFormSet(initial=initial)  
return render_to_response('project/campanha/display_inline.html', {'formset': formset,}, context_instance=RequestContext(request)) 

しかし、唯一の最後のインライン・セーブ提出で

<div id="janela"> 
{% include "project/campanha/display_inline.html" %}  
</div> 

これはアヤックスです。 form.htmlのソースコード:

<input type="hidden" name="janela_set-TOTAL_FORMS" value="1" id="id_janela_set-TOTAL_FORMS" /><input type="hidden" name="janela_set-INITIAL_FORMS" value="0" id="id_janela_set-INITIAL_FORMS" /><input type="hidden" name="janela_set-MAX_NUM_FORMS" id="id_janela_set-MAX_NUM_FORMS" /> 
<table border="0" cellpadding="0" cellspacing="0"> 
<tbody> 

<input type="hidden" name="janela_set-0-id" id="id_janela_set-0-id" /> 
<tr> 
    <td>Postais: <input type="text" name="janela_set-0-postais" value="45" id="id_janela_set-0-postais" /></td> 
    <td>Status: <select name="janela_set-0-status" id="id_janela_set-0-status"> 
<option value="" selected="selected">---------</option> 
<option value="2">Girando</option> 
<option value="1">Vendido</option> 
</select></td> 
    <td>Display: <select name="janela_set-0-display" id="id_janela_set-0-display"> 
<option value="" selected="selected">---------</option> 
<option value="1">Shopping Point</option> 
<option value="2">Restaurante</option> 
<option value="3">Centro de Artes</option> 
</select></td> 
<td><input type="checkbox" name="janela_set-0-DELETE" id="id_janela_set-0-DELETE" /></td> 

画像プリントショー3つのインラインではなくソースにおいてのみ1インラインで表示されます。 =/

誰でも助けることができますか? ありがとう!このコードによって解決

答えて

0

// Ajax function 

$("#add").live("click", function() { 
var add = 'add'; 
var total_forms = $('#id_janela_set-TOTAL_FORMS').val(); 
var initial_forms = $('#id_janela_set-INITIAL_FORMS').val(); 
var max_forms = $('#id_janela_set-MAX_NUM_FORMS').val(); 
var display_id = $(this).val(); 
var url = '{% url "add_campanha" %}'; 
$.ajax({ 
    type: 'post', 
    url: url, 
    data: { 
     'janela_set-TOTAL_FORMS': total_forms, 
     'janela_set-INITIAL_FORMS': initial_forms, 
     'janela_set-MAX_NUM_FORMS': max_forms, 
     'add': add, 
     'display_id': display_id, 
     'csrfmiddlewaretoken':'{{ csrf_token }}', 
    }, 
    success: function(data){ 
     //alert(data); 
     var janela = $('#janela'); 
     janela.html(data); 
     //cloneMore('#form-campanha tbody tr', 'janela_set'); 
     console.log('Success!'); 
    }, 
}); 

})。

再生回数:インラインをレンダリングするために含めるHTMLを使用して

if 'add' in request.POST:   
     cp = request.POST.copy() 
     cp['janela_set-TOTAL_FORMS'] = int(cp['janela_set-TOTAL_FORMS'])+ 1 
     formset = PrimaryFunctionFormSet(cp, prefix='janela_set')     
     return render_to_response('project/campanha/display_inline.html', {'formset':formset}, context_instance=RequestContext(request)) 

テンプレート:APPENDで

{{ formset.management_form }} 
<table border="0" cellpadding="0" cellspacing="0"> 
<tbody> 
{% for form in formset %} 
{{ form.id }} 
<tr> 
    <td>Postais: {{ form.postais }}</td> 
    <td>Status: {{ form.status }}</td> 
    <td>Display: {{ form.display }}</td> 
    {% if formset.can_delete %} 
    <td>{{ form.DELETE }}</td> 
    {% endif %} 
</tr> 
{% endfor %} 
</tbody> 
</table> 

別の問題():

<div id="janela"> 
{% include "project/campanha/display_inline.html" %}   
</div> 

がdisplay.htmlテンプレートを含めますこの投稿のフォームセット: https://stackoverflow.com/questions/10131257/django-and-append-jquery-with-inline-formset-problems

関連する問題