[210807 Django] 오늘의 에러

Choi Rim·2021년 8월 7일
0

Error

목록 보기
2/4
post-thumbnail
>>> '{:.1f}'.format(StarRating.objects.filter(cafe_id=2).aggregate(average = Avg('score'))['average'] )
'3.5'
>>> '{:.1f}'.format(StarRating.objects.filter(cafe_id=4).aggregate(average = Avg('score'))['average'] )
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: unsupported format string passed to NoneType.__format__

format 함수에서 오류가 났다.

TypeError: unsupported format string passed to NoneType.__format__

아마 cafe_id=4의 별점 데이터베이스에 아무것도 존재하지 않아서 None이 format 함수에 들어가자 오류가 발생한 듯 하다.

>>> '{:1f}'.format(None)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: unsupported format string passed to NoneType.__format__

format 함수에 None을 넣으면 똑같은 오류가 발생한다.

어떻게 해결해야 할까? 🤔


for recommended_cafe in recommended_cafes:

                average_score = StarRating.objects.filter(cafe_id=recommended_cafe.id).aggregate(average = Avg('score'))['average']

                if average_score != None:
                    recommendation.append({
                        'cafe_name'          : recommended_cafe.name,
                        'average_star_rating': '{:.1f}'.format(average_score),
                        'cafe_image'         : recommended_cafe.main_image_url
                    }   
                    )
                else:
                    recommendation.append({
                        'cafe_name'          : recommended_cafe.name,
                        'average_star_rating': '0',
                        'cafe_image'         : recommended_cafe.main_image_url
                    }   
                    )

average_score가 None이 아닐시(데이터베이스에 데이터가 존재할 시) format 함수의 결과를 append해주고 None일 시 (데이터베이스에 데이터 존재하지 않을 시) 0을 출력하게 해주었다.

            "recommendation": [
                {
                    "cafe_name": "모리츠 플라츠",
                    "average_star_rating": "2.7",
                    "cafe_image": "https://i.imgur.com/pzMvbm8.jpg"
                },
                {
                    "cafe_name": "alwaysau8ust",
                    "average_star_rating": "0",
                    "cafe_image": "https://i.imgur.com/99meB8B.jpg"
                },
                {
                    "cafe_name": "braunhaus",
                    "average_star_rating": "0",
                    "cafe_image": "https://i.imgur.com/ut17HVO.jpg"
                },
                {
                    "cafe_name": "모리츠 플라워",
                    "average_star_rating": "2.0",
                    "cafe_image": "https://i.imgur.com/pzMvbm8.jpg"
                },
                {
                    "cafe_name": "alwayshungry",
                    "average_star_rating": "0",
                    "cafe_image": "https://i.imgur.com/99meB8B.jpg"
                },
                {
                    "cafe_name": "브라운해우소",
                    "average_star_rating": "0",
                    "cafe_image": "https://i.imgur.com/ut17HVO.jpg"
                }
            ]

None일때는 0, None이 아닐때는 평균값이 잘 출력된다.

profile
https://rimi0108.github.io/

0개의 댓글