[ORM]get_or_created

박민하·2022년 7월 5일
0

DJANGO

목록 보기
15/22
post-thumbnail

✔ 코드

class WatchListView(View):
    @token_decorator
    def post(self, request):
        try:
            data = json.loads(request.body)

            if not Film.objects.filter(id = data['film_id']).exists:
                return JsonResponse({'message' : 'FILM_DOES_NOT_EXIST'}, status = 404)

            film = Film.objects.get(id = data['film_id'])
            user = request.user

            wish, is_created = WatchList.objects.get_or_create(film = film, user = user)

            if not is_created:
                wish.delete()
                return JsonResponse({'message' : 'WATCH_LIST_DELETED'}, status = 204)

            return JsonResponse({'message' : 'SUCCESS'}, status = 201)

        except KeyError:
            return JsonResponse({'message' :'KEY_ERROR'}, status = 400)

  보고싶어요 버튼을 클릭 했을 때, 이미 보고싶어요가 되어있으면 데이터 삭제, 없으면 데이터를 저장하도록 할 수 있다.

✔ get_or_created(defalt=none, ** kwargs)

  get_or_create 메서드는 튜플 형식인 (object, created) 으로 값을 반환 한다.

  • object : 모델 객체
  • created : boolean flag(TRUE/FALSE로 생성/삭제 여부 확인)
profile
backend developer 🐌

0개의 댓글