データ集計のAJAX呼び出しでDjangoで生成されたフォームを使用しようとしています。私は単純なModelFormを使っていますが、インラインフォームセットを追加すると、隠しIDフィールドのいくつかに値を設定する必要があります。すべてのサブミットは新しいインスタンスを作成しています。住所を持つ学校の場合、私は保存ビューでこれを持っています:AJAX経由でDjangoフォームの値を設定する方法
これは私のフォームを移入するJSです。 #id_address_set-0-school
と#id_address_set-0-id
は、2つのDjangoで生成されたフィールドです。
$('a[name^="editSchool"]').click(function(e) {
e.preventDefault();
$.ajax({
url: '/schooljson/' + this.getAttribute('schoolid') + '/'
}).done(function(data) {
$('#id_school_code').val(data.school_code);
$('#id_full_name').val(data.school_name);
$('#id_student_count').val(data.school_students);
$('#id_school_pk').val(data.school_pk);
$('#id_address_set-0-address_line_1').val(data.address_line_1);
$('#id_address_set-0-address_city').val(data.address_city);
$('#id_address_set-0-address_state').val(data.address_state);
$('#id_address_set-0-address_zip').val(data.address_zip);
$('#id_address_set-0-school').attr('value', data.school_pk);
$('#id_address_set-0-id').attr('value', data.address_pk);
$('#addSchoolModal').modal('show');
});
アイデアは何ですか?
興味深い。それはおそらくそれを行う良い方法です。私はschool_address()のケースについても説明しなければならないでしょう。ここでいくつかのクリックは編集され、フォームに入力され、キャンセルされ、新しいものを作成するために空のformsetにリセットする必要があります。私はおそらくこのルートに行くだろうが、元の方法がなぜ機能しないのか知っていれば、まだ一般的に好奇心が強い。これらのフィールドがフォームにある学校と一致する場合、なぜそれがバックエンドで一致しないのですか? ありがとう! – Dustin
@ダスティンは私の答えを受け入れることに感謝します。あなたのコードをもう一度見て、一見すると、あなたの 'pk'への参照は実際には 'id'でなければならないと思います。したがって、data.school_pkはdata.school_idでなければならず、data.address_idはたぶんdata.idでなければなりません。質問を編集し、jsonを作成する関数のコードを追加すると便利です。 Firefox用のfirebug拡張機能やChrome用のChrome開発ツールを使用している場合は、それらをチェックすることをお勧めします。 –