[Django] SystemCheckError: 'max_length' is too small to fit the longest value in '속성명' 에러 발생

itisny·2023년 11월 2일
0
post-custom-banner

🚨문제

📢 에러 발생

$ py manage.py makemigrations
SystemCheckError: System check identified some issues:

ERRORS:
restaurants.Restaurant.cuisine: (fields.E009) 'max_length' is too small to fit the longest value in 'choices' (5 characters).

⚡ 에러난 코드

# models.py
CUISINE_CHOICES = [
    (KOREAN, "한식"),
    (WESTERN, "양식"),
    (JAPANESE, "일식"),
    (CHINESE, "중식"),
    (ASIAN, "아시안음식"),
    (SNACKS, "분식"),
    (CAFE, "카페"),
    (FAST_FOOD, "패스트푸드"),
    (OTHER, "기타"),
]

cuisine = models.CharField(
    max_length=2, choices=CUISINE_CHOICES, help_text="어떤 종류의 음식인가요?"
)

model 작성을 한 뒤, makemigrations을 했는데 시스템 일부에 문제가 있다는 에러를 마주했다. 이번 에러는 choices에서 발생했다. max_length' is too small to fit the longest value in 'choices' (5 characters). 이 문구가 많은 힌트가 되었기 때문에 에러를 해결하는데 많은 시간이 걸리지 않았다.

🔎원인

choices 속성에서 정의된 옵션 중 가장 긴 값이 해당 필드의 max_length보다 크기 때문에 에러가 발생했던 것이다. 이 오류를 해결하려면 max_length를 충분히 크게 설정해야 했다.

💡해결

cuisine = models.CharField(
    max_length=10, choices=CUISINE_CHOICES, help_text="어떤 종류의 음식인가요?"
)

max_length를 옵션의 최대 길이에 맞게 설정하여 오류를 해결했다.
Caht GPT에게 max_length를 어느 정도하는게 좋을지 추천받아서 10으로 설정했다.
이 경우 "아시안음식"을 저장하는 데 필요한 공간을 충분히 확보하게 된다.

post-custom-banner

0개의 댓글