Ich arbeite an einer Seite, die zwei Formulare enthält. Einer dieser Formulare ist ein normaler Name, eine Beschreibung, Notizen usw. Der zweite ist zwei Dropdown-Menüs - Language
und Level
wo die Level
ist verkettet mit Language
mit AJAX
.Wie erstellt man ein dynamisches Formset aus dem Formular in Django/AJAX
Ich möchte dieses Formular auf der Seite erscheint so oft wie user
will. Wenn also Language
und Level
gefüllt werden, erscheint unter dem alten Formular das neue Formular Language
und Level
.
Das Problem ist, dass, wenn die Form gekettet ist, muss ich separat jede Language
und Level
identifizieren, so kann ich nicht kopieren Sie einfach die form
dies in Wiederholung. (Vielleicht kann ich das, aber ich kann es nicht herausfinden, seit ich neu in AJAX bin).
Dies ist ein create job
django/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 %}
Dies ist die 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;
}
})
});
Und eine einfache Ansicht:
@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})
Ich weiß, dass es möglich sein sollte, zu verwenden FormSet
, aber ich kann nicht herausfinden, wie es mit derfunktioniert.
Dank, ich habe es mit einzelner Form und mit formset auch versucht, aber es funktioniert nicht. Wahrscheinlich, weil es keine Klasse gibt. Ich habe ein HTML Formset am Ende meiner Frage –
hinzugefügt Oh, das funktioniert für verkettete Formulare, danke. Aber ich habe immer noch nicht herausgefunden, wie man es nach dem Füllen hinzufügen kann. Erstes Formular ist ausgefüllt -> Zweites Formular erscheint usw. –