2016-08-07 5 views
0

が編集されているフォームセットのフォームのIDを取得します。私はDjangoのフォームセットを含むテーブルをレンダリングDjangoテンプレートを有する

テンプレート(を簡素化)

<table id = 'my_table'> 
    {% for form in my_formset %} 
     <tr><td>{{form.my_field}}</td></tr> 
    {% endfor %} 
</table> 

、私はこのようになりますjqueryのコードがあります。

$(document).on('change', '#my_table tr input[type = text], input[type = number]', function(){ 
     // currently the following code handles save event 
     // $.post ('/save_my_form/', $form.serialize()) 
    }); 

と、対応するDjangoのビュー

def save_my_form(request): 
    # ....... 
    for form in order_draft_formset: 
     if form.is_valid(): 
      form.save() 
    # ....... 

このアプローチの問題は、 Djangoビューはフォームセット全体をループします。問題は、変更された入力がローカライズされたフォームをフェッチする組み込みDjangoの方法があるかどうかです。フォームセット全体を調べずに、この正確なフォームのみをビューに保存します。私はJqueryがDjangoがそれをするのに役立つポストリクエストパラメータを介して何らかの情報を何とか送信しなければならないと感じています。今のところ私は自動的にDjangoで生成されたid、f.e、id_form-5-my_fieldを解析し、Jqueryで "5"を取得してこれをDjangoに渡すことを考えています。しかし、私はこれが「汚れた」方法であるという恐ろしい気持ちがあり、それを行うためのよりクリーンな方法が必要です。これに関するアイデア?実用的かつ基本

答えて

2
if form.has_changed(): 
    if form.is_valid(): 
     form.save() 
+0

うん、。それについて考えなかった。ありがとうございました ) –

関連する問題