I have to select those symptoms which is in the dictionary with the symptoms already posted.It works fine.But for some symptoms typeError is showing in command prompt and also all are getting printed in command prompt but not in html page. Here is my code
views.py
def predict(request):
sym=request.POST.getlist('symptoms[]')
sym=list(map(int,sym))
diseaseArray=[]
diseaseArray=np.array(diseaseArray,dtype=int)
dictArray=[]
for dicti in dictionary:
if (set(sym)<= set(dicti['symptoms']) and len(sym)!= 0) or [x for x in sym if x in dicti['primary']]:
diseaseArray=np.append(diseaseArray,dicti['primary'])
diseaseArray=np.append(diseaseArray,dicti['symptoms'])
diseaseArray=list(set(diseaseArray))
print(diseaseArray)
for i in diseaseArray:
if i not in sym:
dict={'id':i}
dictArray.append(dict)
print(dictArray)
for j in dictArray:
symptoms=Symptom.objects.get(syd=j['id'])
j['name']=symptoms.symptoms
print(j['name'])
print(len(dictArray))
return JsonResponse(dictArray,safe=False)
template
$('.js-example-basic-multiple').change(function(){
$('#suggestion-list').html('');
$('#suggestion').removeClass('invisible');
$.ajax({
url:"/predict",
method:"post",
data:{
symptoms: $('.js-example-basic-multiple').val(),
},
success: function(data){
data.forEach(function(disease){
console.log(disease.name)
$('#suggestion-list').append('<li>'+disease.name+'<li>')
$('#suggestion-list').removeClass('invisible');
});
}
});
The type of each element in diseaseArray
is a np.int32
as defined by the line:
diseaseArray=np.array(diseaseArray,dtype=int) # Elements are int32
int32
cannot be serialized to JSON by the JsonResponse
being returned from the view.
To fix, convert the id value to a regular int
:
def predict(request):
...
for i in diseaseArray:
if i not in sym:
dict={'id': int(i)} # Convert the id to a regular int
dictArray.append(dict)
print(dictArray)
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With