Fetching data from database django
Im trying to run a query for a database containing past year scores of gcse and alevel exams, using data entered through a form on the website. the entered form data creates a search id, searches the subsequent record in the database and returns it. the query is working for everything besides physics papers in the gcse section. the same method i used works for alevels papers for bott math and physics. any help would be much appreciated
from genericpath import exists
from multiprocessing.forkserver import write_signed
from pickletools import read_string1
from turtle import write_docstringdict
from django.shortcuts import render[[physics database](https://i.stack.imgur.com/qzHrU.png)](https://i.stack.imgur.com/Dg4j7.png)
from django.http import HttpResponse
from .models import ThresholdData1, ThresholdData_O, Sat_Curves, ThresholdData_OP
from .forms import ThresholdForm1, SatForm, ThresholdFormO
def alevel(request):
out_data= {
'grade': "",
'form': ThresholdForm1,
'A': "",
'B': "",
'C': "",
'D': "",
'E': "",
"U": "",
"exist": True,
"search_string": "",
}
if request.method== "POST":
form= ThresholdForm1(request.POST)
if form.is_valid():
subject= form.cleaned_data['subject']
variant= str(form.cleaned_data['variant'])
month= form.cleaned_data['month']
year= str(form.cleaned_data['year'])
marks= form.cleaned_data['marks']
year1= year[2:4]
subject= subject.lower()
if subject=="math":
s_code= "9709"
elif subject=="physics":
s_code= "9702"
search_string= f"{s_code}/{variant}/{month}/{year1}"
if ThresholdData1.objects.filter(searchID=search_string).exists() and marks is None:
out_data['search_string']= search_string
data= ThresholdData1.objects.get(searchID=search_string)
out_data['A']= data.a
out_data['B']= data.b
out_data['C']= data.c
out_data['D']= data.d
out_data['E']= data.e
return render(request, 'alevel.html', out_data)
elif ThresholdData1.objects.filter(searchID=search_string).exists():
data= ThresholdData1.objects.get(searchID=search_string)
out_data['A']= data.a
out_data['B']= data.b
out_data['C']= data.c
out_data['D']= data.d
out_data['E']= data.e
if marks>=data.a:
out_data['grade']="A"
elif marks>=data.b:
out_data["grade"]= "B"
elif marks>=data.c:
out_data["grade"]= "C"
elif marks>=data.d:
out_data["grade"]= "D"
elif marks>=data.e:
out_data["grade"]= "E"
else:
out_data['grade']="U"
return render(request, 'alevel.html',out_data)
else:
out_data["exist"]= False
return render(request, 'alevel.html', out_data )
return render(request, 'alevel.html', {'form': ThresholdForm1})
def olevel(request):
out_data= {
'grade': "",
'something': "",
'form': ThresholdFormO,
'A': "",
'B': "",
'C': "",
'D': "",
'E': "",
"U": "",
'exist': True,
'search_string': "",
}
if request.method=="POST":
form= ThresholdFormO(request.POST)
print(form)
if form.is_valid():
subject= form.cleaned_data['subject']
variant= str(form.cleaned_data['variant'])
month= form.cleaned_data['month']
year= str(form.cleaned_data['year'])
marks= form.cleaned_data['marks']
year1= year[2:4]
subject= subject.lower()
if subject=="math":
s_code= "4024"
elif subject=="physics":
s_code= "5054"
print(s_code)
search_string= f"{s_code}/{variant}/{month}/{year1}"
print(search_string)
print(subject)
if ThresholdData_O.objects.filter(searchID= search_string).exists() and marks is None and s_code=="4024":
out_data['search_string']= search_string
data= ThresholdData_O.objects.get(searchID=search_string)
out_data['A']= data.a
out_data['B']= data.b
out_data['C']= data.c
out_data['D']= data.d
out_data['E']= data.e
return render(request, 'olevel.html', out_data)
elif ThresholdData_O.objects.filter(searchID= search_string).exists() and s_code=="4024":
data= ThresholdData_O.objects.get(searchID=search_string)
out_data['A']= data.a
out_data['B']= data.b
out_data['C']= data.c
out_data['D']= data.d
out_data['E']= data.e
if marks>=data.a:
out_data['grade']="A"
elif marks>=data.b:
out_data["grade"]= "B"
elif marks>=data.c:
out_data["grade"]= "C"
elif marks>=data.d:
out_data["grade"]= "D"
elif marks>=data.e:
out_data["grade"]= "E"
else:
out_data['grade']="U"
return render(request, 'olevel.html', out_data)
elif ThresholdData_OP.objects.filter(searchID= search_string).exists() and marks is None and s_code=="5054":
out_data['search_string']= search_string
data= ThresholdData_OP.objects.filter(searchID=search_string).first()
out_data['A']= data.a
out_data['B']= data.b
out_data['C']= data.c
out_data['D']= data.d
out_data['E']= data.e
return render(request, 'olevel.html', out_data)
elif ThresholdData_OP.objects.filter(searchID= search_string).exists() and s_code=="5054":
data= ThresholdData_OP.objects.filter(searchID=search_string).first()
print(data)
out_data['A']= data.a
out_data['B']= data.b
out_data['C']= data.c
out_data['D']= data.d
out_data['E']= data.e
if marks>=data.a:
out_data['grade']="A"
elif marks>=data.b:
out_data["grade"]= "B"
elif marks>=data.c:
out_data["grade"]= "C"
elif marks>=data.d:
out_data["grade"]= "D"
elif marks>=data.e:
out_data["grade"]= "E"
else:
out_data['grade']="U"
return render(request, 'olevel.html', out_data)
else:
out_data['exist']= False
return render(request, 'olevel.html', out_data )
return render(request, 'olevel.html', {'form': ThresholdFormO})
#home
def home(request):
return render(request, 'home.html')
#sat
def sat(request):
out={
'math': 0,
'reading': 0,
'writing': 0,
'form': SatForm,
'total': 0,
}
if request.method== 'POST':
form= SatForm(request.POST)
if form.is_valid():
testno= form.cleaned_data['practice_test']
raw_score_math= form.cleaned_data['incorrect_in_math']
raw_score_reading= form.cleaned_data['incorrect_in_reading']
raw_score_writing= form.cleaned_data['incorrect_in_writing']
if raw_score_reading is None and raw_score_writing is None:
raw_score_math= str(58-raw_score_math)
s_string_m= f"{testno}/{raw_score_math}"
data_m = Sat_Curves.objects.get(s_id= s_string_m)
out['math']= data_m.points_math
out['total']= out['math']
elif raw_score_reading is None and raw_score_math is None:
raw_score_writing= str((44-form.cleaned_data['incorrect_in_writing']))
s_string_w= f"{testno}/{raw_score_writing}"
data_w= Sat_Curves.objects.get(s_id= s_string_w)
out['writing']= data_w.points_write*10
out['total']= out['writing']
elif raw_score_math is None and raw_score_writing is None:
raw_score_reading= str(52-raw_score_reading)
s_string_r= f"{testno}/{raw_score_reading}"
data_r= Sat_Curves.objects.get(s_id= s_string_r)
out['reading']= data_r.points_read*10
out['total']= out['reading']
elif raw_score_math is None:
raw_score_reading= str((52-form.cleaned_data['incorrect_in_reading']))
raw_score_writing= str((44-form.cleaned_data['incorrect_in_writing']))
s_string_r= f"{testno}/{raw_score_reading}"
s_string_w= f"{testno}/{raw_score_writing}"
data_w= Sat_Curves.objects.get(s_id= s_string_w)
data_r= Sat_Curves.objects.get(s_id= s_string_r)
out['reading']= data_r.points_read*10
out['writing']= data_w.points_write*10
out['total']= out['reading']+ out['writing']
elif raw_score_reading is None:
raw_score_writing= str((44-form.cleaned_data['incorrect_in_writing']))
s_string_w= f"{testno}/{raw_score_writing}"
data_w= Sat_Curves.objects.get(s_id= s_string_w)
out['writing']= data_w.points_write*10
raw_score_math= str(58-raw_score_math)
s_string_m= f"{testno}/{raw_score_math}"
data_m = Sat_Curves.objects.get(s_id= s_string_m)
out['math']= data_m.points_math
out['total']= out['writing']+ out['math']
elif raw_score_writing is None:
raw_score_math= str(58-raw_score_math)
s_string_m= f"{testno}/{raw_score_math}"
data_m = Sat_Curves.objects.get(s_id= s_string_m)
out['math']= data_m.points_math
raw_score_reading= str(52-raw_score_reading)
s_string_r= f"{testno}/{raw_score_reading}"
data_r= Sat_Curves.objects.get(s_id= s_string_r)
out['reading']= data_r.points_read*10
out['total']= out['reading'] + out['math']
else:
raw_score_math= str(58-raw_score_math)
s_string_m= f"{testno}/{raw_score_math}"
data_m = Sat_Curves.objects.get(s_id= s_string_m)
out['math']= data_m.points_math
raw_score_reading= str(52-raw_score_reading)
s_string_r= f"{testno}/{raw_score_reading}"
data_r= Sat_Curves.objects.get(s_id= s_string_r)
out['reading']= data_r.points_read*10
raw_score_writing= str((44-form.cleaned_data['incorrect_in_writing']))
s_string_w= f"{testno}/{raw_score_writing}"
data_w= Sat_Curves.objects.get(s_id= s_string_w)
out['writing']= data_w.points_write*10
out['total']= out['writing']+ out['math'] + out['reading']
return render(request, 'sat.html', out)
form= SatForm
return render(request, "sat.html", out)