Hello. Could someone help me with the next problem: I get data(symptoms) in my form’s input(multiselect) with select2. Then I filter Diseases by these symptoms in my Views. And in ajax success I want to get console.log data from JsonResponse, but I only get list of all Diseases. I can’t realize why this happens. My code:
HTML
<form id="symptom_form" method="GET">
<select class="js-example-basic-multiple" name="general_symps" multiple="multiple"
style="width:75%;" id="general_symps">
<option value="1">One</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
<option value="5">five</option>
<option value="6">six</option>
<option value="7">seven</option>
<option value="8">eight</option>
<option value="9">nine</option>
<option value="10">ten</option>
<option value="11">eleven</option>
<option value="12">twelve</option>
<option value="13">thirteen</option>
<option value="14">fourteen</option>
<option value="15">sixxxxx</option>
<option value="16">twenteen</option>
</select>
<button type="submit" class="btn btn-primary subfilter" >Submit</button>
</form>
Jquery
$(document).ready(function() {
$('.js-example-basic-multiple').select2();
});
$(document).ready(function() {
$(".subfilter").click(function (e) {
$.ajax({
url: "{% url 'getResult' %}",
type: 'GET',
data: {
//general_symptoms: $('#general_symptoms').val()
general_symps: $('#general_symps').val()
},
dataType: 'json',
success: function(response){
console.log(response)
},
});
e.preventDefault()
});
});
VIEWS
def getResult(request):
qeq = request.GET.getlist('general_symps')
all_products = Disease.objects.all()
for symp_id in qeq:
all_products = all_products.filter(symptoms_general__id=symp_id)
all = list(all_products.values())
return JsonResponse({"dis": all})
I’ve got all my Diseases {dis: Array(7)}, non-filtered. What do I do wrong? Thanks in advance