장고 ORM - get() 과 filter()

이태연·2021년 12월 4일
0

getfilter에 대략적인 차이점에 대해서는 인식하고 있지만 보다 정확하게 차이점을 알기 위해서 포스팅을 작성합니다.

get과 filter

getfilter의 대표적인 차이점은 get은 쿼리에 맞는 객체 하나만 반환해 준다면, filter는 조건에 맞는 객체 여러개(쿼리셋)을 반환해 준다는 것입니다.

만약 이름에 "test"가 포함된 유저의 정보를 가져오려고 할 때 두 명 이상의 유저가 "test"라는 이름을 포함하고 있다면(두 개 이상의 개체가 발견 된다면) getMultipleObjectRetunred를 발생시킵니다.

하지만 User.objects.get(name__contains='test')에서 getfilter로 변경한다면 조건에 맞는 쿼리셋을 반환해 주는 것을 확인 할 수 있습니다.

만약 조건에 해당하는 객체가 존재하지 않는다면 어떻게 될까요?
get의 경우 DoesNotExist를 발생시킵니다.

반면 filter의 경우 빈 쿼리셋을 반환하는 것을 확인할 수 있습니다.

간단히 정리하자면
조건에 맞는 하나의 개체를 가져오려면 get을 사용하고 조건에 맞는 모든 개체를 가져오고 싶을 때는 filter를 사용합니다.

profile
주니어 백엔드 웹 개발자입니다.

0개의 댓글