我想根据用户从下拉框中进行的选择来筛选和显示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