Applion 006 | django ChoiceField (form) 에서 아무것도 선택 안하면 에러처리하기

Yunny.Log ·2022년 2월 3일
0

ToyProject

목록 보기
10/13
post-thumbnail

  • 위 처럼 default로 choicefield가 '선택'으로 되어있는데 아무것도 선택안하고 저 디폴트대로 폼을 제출한다면 폼 제출이 안되게 하게 하고 싶었다.

1) models.py

class mUser(AbstractBaseUser, PermissionsMixin):
    position_choices=[
        ('선택', None),
        ('개발', '개발'),
        ('기획', '기획'),
        ('디자인', '디자인'),
    ]
    
    position = models.CharField(
        max_length=10,
        choices = position_choices,
        default='선택',
    )
  • default 값으로 선택을 줄건데
    choice를 위한 옵션들 설정할 때

  • 파란 부분이 사용자가 선택할 때 보이는 값
  • 빨간 부분이 실제로 db에 저장되는 값
    이다.

나는 '선택'은 아무런 값도 가지고 있지 않은 의미없는 기본값이라서 이 아이의 값으로 None을 주었다.

2) forms.py

 position = forms.ChoiceField(label="내가 선택한 포지션은 ", choices=position_choices, required=True)
  • 그리고 forms.py 에서 이를 선언할 때 required 속성을 True로 준다.
    => required = True라면 이 값은 필요로 하는 값이라는 뜻인데, 만약 사용자가 default 인 '선택'을 누르고 폼을 제출하면 None 값이 저장이 되러 오는 것인데 이는 required = True 속성에 위배되기 때문에 에러가 나서 폼 제출 및 저장이 수행되지 않게 된다

한줄 요약 : Choice필드 값으로 None을 넣어주면 됩니다

0개의 댓글