Info: I want to get data from context. The context data is coming from for loop function.
Problem: I am getting this UnboundLocalError local variable 'context' referenced before assignment
def CurrentMatch(request, match_id):
match = Match.objects.get(id=match_id)
match_additional = MatchAdditional.objects.get(match=match)
innings = match_additional.current_innings
recent = Score.objects.filter(match=match).filter(innings=innings).order_by('over_number')[::-1][:1]
for score in recent:
context = {
"ball_number": score.ball_number,
"over_number": score.over_number,
}
return HttpResponse(json.dumps(context))
CodePudding user response:
You should do something like this :
def CurrentMatch(request, match_id):
match = Match.objects.get(id=match_id)
match_additional = MatchAdditional.objects.get(match=match)
innings = match_additional.current_innings
recent = Score.objects.filter(match=match).filter(innings=innings).order_by('over_number')[::-1][:1]
if recent:
for score in recent:
context = {
"ball_number": score.ball_number,
"over_number": score.over_number,
}
return HttpResponse(json.dumps(context))
else:
return HttpResponse(json.dumps({}))
CodePudding user response:
it happened because recent queryset is emtpy. use this snippet:
def CurrentMatch(request, match_id):
match = Match.objects.get(id=match_id)
match_additional = MatchAdditional.objects.get(match=match)
innings = match_additional.current_innings
recent = Score.objects.filter(match=match).filter(innings=innings).order_by('over_number')[::-1][:1]
if len(recent) > 0:
for score in recent:
context = {
"ball_number": score.ball_number,
"over_number": score.over_number,
}
return HttpResponse(json.dumps(context))
else:
return HttpResponse(json.dumps({}))
with this part of code len(recent)
you can check whether the queryset has objects or not.