seminar-2020
seminar-2020 copied to clipboard
TimeField의 format 지정 문제
간단한 문제인것 같은데 이부분에서 막혔습니다. 아래와 같은 에러가 뜨는데
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 오류가 발생하는지 모르겠습니다...
TimeField()
자체에 포맷이 있기 때문에
format='%H:%M', input_formats=['%H:%M']
으로 지정해주신 포맷과 충돌이 난 것 같습니다.
차라리 직접 지정해주신 사항들을 없애주면 문제가 해결될 것 같습니다.
저 같은 경우는 HH:MM 포맷으로 맞추기 위해
time = serializers.TimeField(input_formats=["%H:%M", ])
로 했어서 한번 이거로 해보시겠어요?
아니면 마이그레이션 지우고 다시 해보시는것도 방법일 것 같습니다.
혹시 settings.py는 건드리셨는지도 알려주시면 좋겠습니다!
위에 언급한 코드 아래에서 UserSeminar 인스턴스를 생성하는데, 해당 모델을 정의할때 updated_at 필드의 옵션 중 blank=True를 명시하지 않아 형식에 맞지 않는다는 오류를 내는 걸 발견했습니다! 다시 보니 정상적으로 작동하는 곳에서 문제를 찾고있었네요ㅠㅜ 두 분 답변 감사합니다..!