Django BooleanField 사용시 icon 에러

2021. 1. 18. 22:43파이썬/Django

3.1.2에서 분명 문제가 있었는데, 3.1.5로 업그레이드하고 나서 아무런 문제 없음

[models.py]

    start_is_milestone = models.BooleanField(default=False)

[admin.py]

list_display = ['id','level','start_is_milestone','end_is_milestone''description']

BooleanField를 사용하고 list_display에 해당 컬럼을 사용하면, 아래와 같은 에러 발생

  File "...AppData\Local\Programs\Python\Python38\lib\site-packages\django\contrib\admin\templatetags\admin_list.py", line 199, in _boolean_icon
    icon_url = static('admin/img/icon-%s.svg' % {True: 'yes', False: 'no', None: 'unknown'}[field_val])
KeyError: '1'

문제는 BooleanField의 실제 값이 '0'과 '1'이기 때문에, 에러가 나는 소스에서 처리가 안됨

해당 소스를 찾아 아래와 같이 수정하면 해결됨

단, 1과 0으로 하면 에러 발생

  File "...AppData\Local\Programs\Python\Python38\lib\site-packages\django\contrib\admin\templatetags\admin_list.py", line 199, in _boolean_icon
    icon_url = static('admin/img/icon-%s.svg' % {True: 'yes','1': 'yes',False: 'no', '0': 'no', None: 'unknown'}[field_val])
KeyError: '1'