Quindi ho ottenuto un semplice modulo di registrazione. In questa forma ci sono altri 3 campi:Django, ajax compila il modulo con i dati del modello
- Università
- Corso
- modulo
Quello che sto cercando di fare è quello di filtrare i dati. Quindi, quando l'utente seleziona un'università, il campo del corso (seleziona) mostrerà tutti i corsi che appartengono a questa università. Anche quando l'utente seleziona un corso, il campo modulo (seleziona) mostrerà tutti i moduli che appartengono a questo corso. Se controlli l'immagine, vedrai che è piuttosto semplice.
Sono riuscito a mostrare tutte le università, corsi e moduli ma ciò non è pratico poiché i dati non sono corretti (mostra tutte le voci). So come filtrare il queryset ma non so come usare AJAX per farlo. Ho provato molti tutorial ma non sono riuscito a trovare qualcosa, quindi mi dispiace non aver pubblicato il codice.
Se mi si può puntare al tutorial destra, ad esempio o darmi qualche codice per iniziare a lavorare su di esso ...
UPDATE ho usato l'esempio di Del per iniziare a lavorare su di esso . Il fatto è che non sono affatto bravo con AJAX e JS. Così ho creato una vista che riceve la richiesta dal modulo Ajax (per ora restituisce solo tutti i corsi, nessun filtro). Il problema che sto avendo è che quando seleziono l'università, la selezione course
diventa vuota. Quindi immagino che non ottenga i dati dalla vista. Se si può avere uno sguardo ..
vista
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
Così, dopo seleziono un'università, il selezionare il codice sorgente di corso è come this:
<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>
Ciò significa che sto ricevendo i dati ma devo aggiungere un po 'di html? Mi piace <li>...</li>
?
Ho provato per molte ore a farlo funzionare ma purtroppo non ha avuto risultati. Ho aggiornato la domanda e aggiunto del codice! Cosa ne pensi? – manosim
Risposta aggiornata per aiutare con il nuovo numero – Del
Works !! È fantastico! Grazie.. – manosim