So bekam ich ein einfaches Registrierungsformular. In dieser Form gibt es 3 weitere Felder:Django, Ajax bevölkert Formular mit Modelldaten
- Universität
- Course
- Modul
Was ich versuche, die Daten zu filtern, zu tun ist. Wenn der Benutzer also eine Universität auswählt, werden im Kursfeld (select) alle Kurse angezeigt, die zu dieser Universität gehören. Wenn der Benutzer einen Kurs auswählt, zeigt das Modulfeld (select) alle Module an, die zu diesem Kurs gehören. Wenn Sie das Bild überprüfen, werden Sie sehen, dass es ein bisschen einfach ist.
Ich habe es geschafft, alle Universitäten, Kurse und Module zu zeigen, aber das ist nicht praktikabel, da die Daten nicht korrekt sind (zeigt alle Einträge). Ich weiß, wie man das Abfrage-Set filtert, aber ich weiß nicht, wie man AJAX dazu benutzt. Ich habe viele Tutorials versucht, konnte aber nichts finden. Tut mir leid, dass ich keinen Code gepostet habe.
Wenn Sie mich nach rechts Tutorial Beispiel Punkt oder einen Code geben Sie mir arbeiten, es zu starten ...
UPDATE I Dels Beispiel verwendet, um daran zu arbeiten zu beginnen . Die Sache ist, dass ich mit AJAX und JS überhaupt nicht gut bin. Also habe ich eine Ansicht erstellt, die die Anfrage von der Ajax-Form erhält (vorerst gibt sie nur alle Kurse zurück, keine Filterung). Das Problem, das ich habe, ist, dass, wenn ich die Universität auswähle, dann die course
Auswahl leer wird. Also ich denke, es bekommt nicht die Daten aus der Sicht. Wenn Sie einen Blick haben ..
Ansicht
def ajax_get_courses(request):
courses = Course.objects.all()
if request.is_ajax():
data = serializers.serialize('json', courses)
return HttpResponse(data,'json')
else:
return render_to_response('registration/registration_form_teacher.html', {'courses':courses}, context=RequestContext(request))
js
$(document).ready(function(){
$("#university").change(function(){
var request = $.ajax({
url: "{% url 'ajax_get_courses' %}",
type: "POST",
data: { university: $("#university").val(),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
dataType: "html"
});
request.done(function(msg) {
$("#course").html(msg);
});
});
});
UPDATE 2
So, nachdem ich eine Universität auswählen, die Auswahl natürlich Quellcode ist wie dies:
<select id="course" name="course" class="form-control">[{"pk": 1, "model": "studies.course", "fields": {"attendance": "FT", "name": "Computer Science", "degree": "BSc (Hons)", "university": 1, "modules": [], "years": 3}}, {"pk": 2, "model": "studies.course", "fields": {"attendance": "FT", "name": "Computer Science", "degree": "MComp (Hons)", "university": 1, "modules": [], "years": 4}}, {"pk": 3, "model": "studies.course", "fields": {"attendance": "FT", "name": "Civil Engineering", "degree": "BEng (Hons)", "university": 1, "modules": [], "years": 3}}, {"pk": 4, "model": "studies.course", "fields": {"attendance": "FT", "name": "Civil Engineering", "degree": "MEng (Hons)", "university": 1, "modules": [], "years": 4}}, {"pk": 5, "model": "studies.course", "fields": {"attendance": "FT", "name": "Pharmacy", "degree": "MPharm (Hons)", "university": 1, "modules": [], "years": 4}}, {"pk": 6, "model": "studies.course", "fields": {"attendance": "FT", "name": "Aeronautical Engineering", "degree": "MEng (Hons)", "university": 4, "modules": [], "years": 4}}, {"pk": 7, "model": "studies.course", "fields": {"attendance": "FT", "name": "Biochemistry", "degree": "BSc (Hons)", "university": 3, "modules": [], "years": 3}}, {"pk": 8, "model": "studies.course", "fields": {"attendance": "FT", "name": "Chemistry", "degree": "BSc (Hons)", "university": 3, "modules": [], "years": 3}}, {"pk": 9, "model": "studies.course", "fields": {"attendance": "FT", "name": "Business Studies", "degree": "BSc (Hons)", "university": 3, "modules": [], "years": 3}}]</select>
Was bedeutet, dass ich die Daten bekomme, aber ich muss etwas HTML hinzufügen? Wie <li>...</li>
?
Ich versuchte für viele Stunden, es zu arbeiten, aber leider hatte keine Ergebnisse. Ich habe die Frage aktualisiert und Code hinzugefügt! Was denken Sie? – manosim
Aktualisierte Antwort, um mit Ihrer neuen Ausgabe zu helfen – Del
Funktioniert !! Das ist großartig! Vielen Dank.. – manosim