개발일지?/내배캠

캠프 9주 3일차 TIL

규파팡 2023. 5. 10. 21:09

오늘

드디어 user모델이 생성됐다. 역시 만나니깐 오류천국... 간단했던 오류는 이 부분이었다.

    def post(self, request):
        if not request.user.is_authenticated:
            return Response({"message":"글을 쓰고 싶다면! 로그인해~"}, status=status.HTTP_401_UNAUTHORIZED)
        serializer = CreateReviewSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response({"message":"작성완료"}, status=status.HTTP_200_OK)

확인해 본결과 user모델이 없을 때 자동으로 저장되던 부분인데 왜 안되지? 하면서 오류메시지를 봤는데

django.db.utils.IntegrityError: NOT NULL constraint failed: reviews_review.user_id

Review 모델의 user_id 필드가 null 값을 허용하지 않도록 지정되어 있는데 null 값을 가지고 있을 때 발생한다.

이 오류는 Review 모델을 저장할 때 user_id 필드가 지정되지 않았을 때 발생하고 다시 말해 이 오류는 user_id 필드를 제외한 모든 필드에 대한 값을 제공하고 user_id를 지정하지 않은 경우 발생한다. 그래서 user_id를 따로 저장해줘야 한다.

수정한 코드는 serializer.save() 이 부분이다. 아래에서는 serializer.save(user=request.user) 이렇게 수정,

def post(self, request):
    if not request.user.is_authenticated:
        return Response({"message":"글을 쓰고 싶다면! 로그인해~"}, status=status.HTTP_401_UNAUTHORIZED)
    serializer = CreateReviewSerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    serializer.save(user=request.user)
    return Response({"message":"작성완료"}, status=status.HTTP_200_OK)

user를 request.user로 받아줬다. 그랬더니 리뷰 작성 성공! 근데 오늘 저 오류를 참 많이 봤다............... user 모델을 merge 하기 전 후 차이가 크다. user모델이 없어도 문제 없이 작업하는 날이 오겠지? 

 

오늘의 규파팡이 느낀 점!

아직은 초반이라 작업을 순서대로만 해봐서 그런지 user 없이 게시글과 댓글 부분구현은 헷갈린다. 더공부해서 문제없이 진행되도록 노력해야겠다.! 그리고 message부분도 원래는 작성 안 해주고 그냥 문자만 입력했는데 test코드를 작성하다 보니 message가 중요하다는 걸 깨달았다. 앞으로는 다 message로 보내줄 예정이다.

TIL 대표이미지

 

'개발일지? > 내배캠' 카테고리의 다른 글

캠프 9주 5일차 TIL  (0) 2023.05.14
캠프 9주 4일차 TIL  (1) 2023.05.11
캠프 9주 1일차 TIL  (1) 2023.05.08
WIL 8주차 - 내배캠  (0) 2023.05.07
캠프 8주 4일차 TIL  (0) 2023.05.07