두 메소드는 DB의 object에 적용할수 있는 filter메소드에 적용할 수 있는 함수이며 비슷하지만 큰차이가 존재한다.
- exists : 값을 boolen자료형으로 반환하며, 필터된 값들중 존재한다면 True값을 , 없다면 False값을 반환한다.
unique속성을 가졌을때 존재유무를 판단할때 사용하면 효과적이다.
- first/last : 값을 object로 반환하며, 필터된 값들 중 첫번째/마지막 object값을 반환한다.
반환된 object를 다시 활용해야할때 사용하면 좋다.
2. objects.filter() vs objects.get()
아래의 이미지처럼 두 메소드의 결과물은 같을 수 있다.
하지만 두 매소드간에 차이점은 분명 존재한다.
filter는 QuerySet 객체로 반환되지만 get은 객체로 반환된다.
더 살펴보면 get함수는 filter함수를 거친 QuerySet객체를 다시 조건문을 통과해 객체로 변화된것을 출력해주기 때문이다.
자세한 내용은 stackoverflow 참고하면 된다.