QuerySetAPI(filter().exists() vs filter().first()/last()),(filter vs get)

Nicholas·2022년 5월 14일
0

Django

목록 보기
4/14

1. filter().exists() vs filter().first()/last()

  • 두 메소드는 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 참고하면 된다.
  • python A.objects.get(id=1)

  • python A.objects.filter(id=1).get()
    두함수가 같다.

profile
WEB Developer

0개의 댓글