Otrzymałem prosty formularz rejestracyjny. W tej postaci są 3 kolejne pola:Django, ajax wypełnić formularz z danymi modelu
- Uniwersytet
- Kurs
- Moduł
Co usiłuję zrobić jest filtrowanie danych. Gdy użytkownik wybierze uniwersytet, pole kursu (wybierz) wyświetli wszystkie kursy należące do tej uczelni. Również gdy użytkownik wybierze kurs, pole modułu (wybierz) wyświetli wszystkie moduły, które należą do tego kursu. Jeśli sprawdzisz obraz, zobaczysz, że to trochę proste.
Udało mi się pokazać wszystkie uniwersytety, kursy i moduły, ale to nie jest praktyczne, ponieważ dane nie są poprawne (pokazuje wszystkie wpisy). Wiem, jak filtrować kwerendy, ale nie wiem, jak to zrobić, używając AJAX. Próbowałem wielu samouczków, ale nie mogłem znaleźć czegoś, więc przykro mi, że nie publikuję kodu.
Jeśli można wskazać mi na prawą samouczek, przykład lub dać mi trochę kodu, aby rozpocząć pracę nad nim ...
UPDATE użyłem przykładu Del, aby rozpocząć pracę nad nim . Chodzi o to, że nie jestem dobry w AJAX i JS. Stworzyłem więc widok, który odbiera żądanie z formularza ajax (na razie po prostu zwraca wszystkie kursy, bez filtrowania). Problem, który mam, polega na tym, że gdy wybieram uniwersytet, wybór course
staje się pusty. Więc domyślam się, że nie dostaję danych z widoku. Jeśli można mieć wygląd ..
widok
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
Więc po wybrać uniwersytet, wybierz kod źródłowy jest oczywiście niczym to:
<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>
Co oznacza, że otrzymuję dane, ale muszę dodać trochę html? Jak <li>...</li>
?
Próbowałem przez wiele godzin, aby zadziałało, ale niestety nie przyniosło to żadnych rezultatów. Zaktualizowałem pytanie i dodałem kod! Co myślisz? – manosim
Zaktualizowana odpowiedź, aby pomóc w nowym wydaniu – Del
Działa !! To wspaniale! Dziękuję Ci.. – manosim