Django / Ajax – Wie filter-und Anzeige-Ergebnis, basierend auf Auswahl

Ich versuche zu filtern und die Anzeige von Daten in Django basierend auf der Auswahl durch den Benutzer aus der drop-down-box. Ich bin mit ajax-call schicken Sie eine Anfrage an Django Ansichten. Wenn ein Benutzer wählt, zum Beispiel, die Fluggesellschaft Ein, dann Ajax senden Sie den ‚Wert‘ dieser Auswahl, die eine Ganzzahl zu Django-backend die Daten zu filtern und senden Sie es zurück zum frontend. Hier ist mein code:

HTML:

<form method="GET">
    <select id="airline-selected">
        {% for airline in airline_list %}
            <option value="{{ airline.id }}">
            {{ airline.name }}
            </option>
        {% endfor %}
    </select>
    <input type="button" value="Update" id="selection-button" method="GET">
</form>

Ajax:

<script>
        $( "#selection-button" ).click(function(event) {
            event.preventDefault();
            var airlineSelected = $('#airline-selected').find(":selected").val();

            $.ajax({
                url: "{% url 'charts_data' %}",
                method: 'GET',
                filter_category: parseInt(airlineSelected),
                success: function(data){
                console.log(data)
         },
                error: function(error_data){
                console.log("error")
                console.log(error_data)
         }
            })
        });
    </script>

Views.py:

class ChartData(generics.ListAPIView):
    serializer_class = FinancialDataSerializer

    def get_queryset(self, *args, **kwargs):
        filter_category = self.request.GET.get("filter_category")
        queryset = FinancialData.objects.filter(airline_id=filter_category)
        queryset_filtered = queryset.filter()
        return queryset_filtered

Meiner Konsole.log(Daten) zeigt ein leeres Array, was bedeutet, dass Ansichten sind nicht immer gefiltert. Wie kann ich filter und Anzeige der Daten basierend auf der Auswahl durch den Benutzer vorgenommen?

  • haben Sie überprüft, ob Sie den richtigen Wert filter_category in Ihrem Blick. wenn nicht, fügen Sie ein print(self.request.GET.get("filter_category")) – Anweisung.
  • Ja, das gedruckte Keiner auf dem terminal, was bedeutet, dass Ihr nicht durch den korrekten Wert. Irgendeine Idee warum? Ich kann nicht meinen Kopf um diese.
  • siehe meine Antwort, wenn es hilft.
InformationsquelleAutor Hannan | 2017-08-05



One Reply
  1. 3

    versuchen, ändern Sie Ihre ajax code zum hinzufügen einer data variable.

    $.ajax({
         url: "{% url 'charts_data' %}",
         method: 'GET',
         data : {
                 filter_category: parseInt(airlineSelected)
         }
         success: function(data){
             console.log(data)
         },
         error: function(xhr, errmsg, err){
             console.log("error")
             console.log(error_data)
         }
    });
    • Ja der code funktioniert. Nur für meine info, warum filter_category: parseInt(airlineSelected) nicht funktioniert und die variable, die Sie empfohlen gearbeitet? Thx a lot für deinen Mann, Sie meinen Tag gerettet.
    • froh, dass ich helfen konnte. bitte wählen Sie die kleinen Häkchen und markieren Sie es als Antwort zu korrigieren, so dass es hilfreich sein kann für andere mit gleichen problem
    • alle Daten, die Sie senden möchten, mit Ihrer ajax-request müssen Sie angeben, es als Wörterbuch-namens data. datatables.net/reference/option/ajax.data

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.