seminar-2020 icon indicating copy to clipboard operation
seminar-2020 copied to clipboard

TimeField의 format 지정 문제

Open canoneod opened this issue 4 years ago • 3 comments

간단한 문제인것 같은데 이부분에서 막혔습니다. 아래와 같은 에러가 뜨는데

django.core.exceptions.ValidationError: ['“” value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format.']

작성해놓은 코드를 확인해보니 serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) seminar = serializer.save()

is_valid()에서 error가 난 것은 아니고 save()에서 발생하는 오류로 확인했고, validated_data['time']상에도 datetime.time(시간,분)으로 잘 들어가있는 것을 확인하였습니다.

Seminar 모델에는 time = models.TimeField()로 선언하였고, SeminarSerializer에서 time=serializers.Timefield(format='%H:%M', input_formats=['%H:%M'])와 같이 선언하였습니다.

궁금한 점이, django model field 레퍼런스에는 TimeField의 format을 따로 지정해주는 키워드가 없는 것 같고, django model field 문서에는 instance가 datetime.time 타입으로 형식의 문제는 아닌것 같은데 어떤 이유로 format 오류가 발생하는지 모르겠습니다...

canoneod avatar Sep 26 '20 15:09 canoneod

TimeField() 자체에 포맷이 있기 때문에 format='%H:%M', input_formats=['%H:%M']으로 지정해주신 포맷과 충돌이 난 것 같습니다. 차라리 직접 지정해주신 사항들을 없애주면 문제가 해결될 것 같습니다.

just-dodo avatar Sep 26 '20 16:09 just-dodo

저 같은 경우는 HH:MM 포맷으로 맞추기 위해

time = serializers.TimeField(input_formats=["%H:%M", ])

로 했어서 한번 이거로 해보시겠어요?

아니면 마이그레이션 지우고 다시 해보시는것도 방법일 것 같습니다.

혹시 settings.py는 건드리셨는지도 알려주시면 좋겠습니다!

eldpswp99 avatar Sep 26 '20 16:09 eldpswp99

위에 언급한 코드 아래에서 UserSeminar 인스턴스를 생성하는데, 해당 모델을 정의할때 updated_at 필드의 옵션 중 blank=True를 명시하지 않아 형식에 맞지 않는다는 오류를 내는 걸 발견했습니다! 다시 보니 정상적으로 작동하는 곳에서 문제를 찾고있었네요ㅠㅜ 두 분 답변 감사합니다..!

canoneod avatar Sep 26 '20 16:09 canoneod