私は2つのフォームを含むページで作業しています。 2つ目のドロップダウンメニューはLanguage
とLevel
です。ここでLevel
はLanguage
とAJAX
を使用してチェーンされています。このフォームの1つは通常の名前、説明、メモなどです。Django/AJAXでフォームから動的フォームセットを作成するには
このフォームは、user
が何度もページに表示されるようにしたいと考えています。したがって、Language
とLevel
と入力すると、古いものの下に新しいLanguage
とLevel
のフォームが表示されます。
フォームがチェーン化されている場合は、Language
とLevel
を別々に識別する必要があるため、form
を繰り返してコピーすることはできません。 (たぶん私はできるが、私はAJAXで新しくなってから理解できないかもしれない)。
これはcreate job
ジャンゴ/ htmlです:
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% load static %}
{% block head %}
<script src="{% static "js/main.js" %}"></script>
{% endblock %}
{% block content %}
{% if user.is_authenticated %}
<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
{{ language_form }}
<button value="Update" type="submit">Submit</button>
</form>
{% endif %}
{% endblock %}
これはjQueryのです:
$(document).on('change','#id_language',function(){
language_id = $(this).val();
request_url = '/get-highest-level/'+language_id+'/';
$.ajax({
url:request_url,
success: function(data){
var select = $('#id_level');
select.empty();
$.each(data, function (key,value) {
$('select[name="level"]').append('<option value="'+ key + '">'+value + '</option>');
});
return false;
}
})
});
とシンプルビュー:
@login_required
def create_order(request):
language_form = LanguageLevelForm(request.POST or None)
return render(request,'auth/jobs/create-job-test.html',context={'language_form':language_form})
私はそれが可能でなければならないことを知っていますFormSet
を使用するにはどうすればよいのですか?JQuery
。
おかげで、私はあまりにも単一のフォームにし、フォームセットでそれを試してみたが、それは動作しません。おそらくクラスがないのでおそらく。私は私の質問の下にformsetのHTMLを追加しました –
ああ、これは連鎖フォームのために働く、ありがとう。しかし、私はまだそれが充填後に追加する方法を把握していませんでした。最初のフォームが入力されます - > 2番目のフォームが表示されます –