我想根據用戶從下拉框中進行的選擇來篩選和顯示Django中的數據。我正在使用ajax調用向Django視圖發送請求。例如,當用戶選擇航空公司A時,Ajax會將該選擇的「值」作爲整數發送給Django後端,以過濾數據並將其發送回前端。這裏是我的代碼:Django/Ajax - 如何根據選擇過濾和顯示結果
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>
阿賈克斯:
<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
我的console.log(數據)顯示空數組這意味着視圖不會被過濾。如何根據用戶所做的選擇過濾和顯示數據?
如果您在視圖中獲得了「filter_category」的正確值,那麼您是否檢查過了?如果不添加'print(self.request.GET.get(「filter_category」))'語句。 – badiya
@sasuke是在打印機上打印無,意味着它沒有通過正確的值。任何想法爲什麼?我無法理解這一點。 – Hannan
看到我的答案,如果有幫助。 – badiya