4월 12, 2022

TIL) django.db.utils.IntegrityError: (1048, "Column 'kakao_id' cannot be null")

 

코드 


시리얼라이저


모델


해당 값을 바디에 담아서 POST요청을 보냄



serializer.save() -> serializers.py의 get_or_create에서 문제가 생김

kakao_id를 .get으로 키가 없는 경우 빈 값 들어가도록 처리해주었고, kakao_id 모델 컬럼은 blank=True이므로 kakao_id가 없이 요청을 보내도 문제 없는 것 아닌가?

get_or_create는 다른 기능에서 사용하는 코드라 로직을 변경하기 어려움 

해당부분을 주석처리하고 요청 보내면 원하는대로 user object가 만들어지긴 함

kakao_id가 없으면 get_or_create()에서 get을 하기위해 찾아 줄 조건인 kakao_id 자체가 없어지기에 해당 코드는 kakao_id 값이 없이 요청이 들어오면 동작하지 않는 것이 맞음


생각해보니, 핸드폰 로그인에서도 1회 회원가입 이후 회원 정보를 get해와야 하기에 serializer를 나눠서 get_or_create()를 써주자 


해당 serializer를 추가하여 이를 이용했을 시 원하는 대로 동작한다.