Img profile default
김정기
  • 2016.5.18 22:27
  • 조회수 70
  • 답변수 2
Img profile default
김정기
  • 2016.5.18 22:27
  • 조회수 70
  • 답변수 2

투표수가 힐러리, 트럼프 둘다 0으로 나와요

admin 페이지 들어가서 확인하면

투표수가 있는데

http://localhost:8000/areas/미국/results

여기서 보면 둘다 0으로 나옵니다 ㅠ

def results(request, area):
candidates = Candidate.objects.filter(area = area)
polls = Poll.objects.filter(area = area)
poll_results = []
for poll in polls:
result = {}
result['start_date'] = poll.start_date
result['end_date'] = poll.end_date
total_votes = Choice.objects.filter(poll_id = poll.id).aggregate(Sum('votes'))
result['total_votes'] = total_votes['votes_sum']
rates = []
for candidate in candidates:
try:
choice = Choice.objects.get(poll_id = poll.id, candidiate_id = candidate.id)
rates.append(
round(choice.votes * 100 / result['total_votes'], 1)
)
except :
rates.append(0)
result['rates'] = rates
poll
results.append(result)
context = {'candidates':candidates, 'area':area,'poll_results' : poll_results}
return render(request, 'elections/result.html', context)

  • #장고를 활용한 웹사이트 만들기
  • #여론조사 결과보기3 - Dictionary로 데이터 정리

2 답변

  • G3rlasealonpd5c2kica
    Demi
    • 2016.5.19 14:28

    [여론조사 결과보기2]에 Contact 모델과 강의에서 쓰는 Contact 모델이 달라서 문제가 생겼습니다.

    강의노트 상단에 설명을 적어놓았으니 이를 참고해주시기 바랍니다. 모르는 것이 있으면 댓글 남겨주세요.

    • 앗 혹시 Contact 모델이라는 것은 Choice 모델을 말씀하시는 것이 맞으신가요? :)-Daeyeon Jo
      2016.8.3 15:26
  • 1320678854624704
    Daeyeon Jo
    • 2016.8.4 01:43

    일단 저도 위 질문자분과 같은 방식으로 코딩을 하였고,

            for candidate in candidates:
                try:
                    print("######teststart")
                    print(poll.id)
                    print(candidate.id)
                    choice = Choice.objects.get(poll_id = poll.id, candidate_id = candidate.id)
                    print(choice.votes)
                    print(result['total_votes'])
                    print("######testend")
                    rates.append(round(choice.votes * 100 / result['total_votes'], 1))
                except:
                    rates.append(0)
                    print("######error")
    

    위와 같이 test 를 위한 print 문을 넣어서 에러가 발생하는 부분을 찾았었어요!
    (저의 경우는 round() 의 닫는 괄호가 missing)

    질문자 분의 경우도 유사한 문제였던 듯 싶은데

    choice = Choice.objects.get(poll_id = poll.id, candidiate_id = candidate.id)
    

    위 적어주신 코드에서 candidiate_id -> candidate_id 로 바꿔주시면 작동할 듯 싶어요! (오탈자)

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.