[샤넬 프로젝트] filter()와 get()의 차이(장고)

hyuckhoon.ko·2020년 6월 29일
0

What I learned in wecode

목록 보기
61/109

장고에서 쿼리셋 사용시
filter() 또는 get()메소드를 통해 조건에 부합하는
객체들을 검색할 수 있다.

장고 문서를 그저 읽을 때는 미처 알지 못했던 개념이었다.
하지만, 샤넬 홈페이지의 로컬 데이터베이스 구축 및 엔드포인트 구축을 하며
그 차이를 알게 되었다.

내가 작성한 views.py(엔드포인트)에서 validation을 할 때,
filter와 get 둘 중 get의 경우는 DB에 데이타 row가 없거나
해당 row가 multiple 일 때, 에러 메시지를 보여줬다.


스택오버플로우 답변에 그 차이가 잘 설명되어 있다.

  • get()메소드 사용 룩업시 : MultipleObjects 혹은 DoesNotExist exception 에러를 리턴한다.

  • filter()메소드 사용 룩업시 : 새로운 쿼리셋을 생성 후,
    필터 조건에 부합하는 객체들을 넣은 후 리턴한다.
    (즉, 필터조건에 부합하는 객체들이 하나도 없을시,
    에러 메시지가 아닌 빈 쿼리셋을 리턴한다.)

0개의 댓글