TIL 11. Django_Query Set model method(filter()와 get()의 차이)
Today's topic
👉 자주 사용되는 Query Set model method의 종류 및 특징
1️⃣ QuerySet이 반환되는 경우의 주요 method(이전 편 참조)
2️⃣ QuerySet이 반환되지 않는 경우의 주요 method(이전 편 참조)
3️⃣ filter()와 get()의 차이점
3️⃣ QuerySet이 반환되는 경우의 주요 method
👉 QuerySet method를 다루면서 instance내에 있는 해당하는 정보를 얻고 싶어 filter()와 get() method를 통해 불러 보려 시도하였다. 하지만 get() method로는 get().(key)를 통해 불러 올 수 있었으나, filter() method로는 filter().(key)를 통해 시도하였으나, error가 나며 불러오지 못했다. filter로는 불러올 수 있는 방법이 없는 지 알아보면서 해당 내용을 정리하게 되었다.
- filter()
filter() method는 QuerySet 형태로 반환이 된다. filter는 해당하는 정보들을 sorting하여 걸러내는 역할이기에 QuerySet의 리스트 형태로 나오게 된다. 따라서 해당 filter() 뒤에 key로 붙여서 요청을 하였을 시에는 값이 나오지 않는 것을 확인하였다.In : Product.objects.filter(id=1) Out : <QuerySet [<Product: Product object (1)>]> >> Product.objects.filter(id=1).korean_name Traceback (most recent call last): File "<console>", line 1, in <module>
정답은 for문을 사용하여 가져올 수 있다.In : for product in Product.objects.filter(id=1): print(product.korean_name) Out : 나이트로 바닐라 크림
- get()
get() method는 위와 같이 for문을 사용하지 않고도 korean_name을 뒤에 붙여주기만 함으로써 불러올 수 있다. ' ' 형태로 반환 결과가 나온다.In : Product.objects.get(id=1).korean_name Out : '나이트로 바닐라 크림'
My opinion
filter()나 get() 원하는 sorting을 할 수 있으나, filter는 범위를 선택하는 것으로 확인이 되고 get()은 원하는 하나를 선택해서 사용하는 것으로 확인이 된다. 어느 key에 해당하는 Query들을 sorting하고 싶은 경우는 filter()를 쓰고, 딱 명확한 값을 구하고 싶을 때면 get()을 사용하면 되겠다.
Author And Source
이 문제에 관하여(TIL 11. Django_Query Set model method(filter()와 get()의 차이)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yg910524/TIL-11.-DjangoQuery-Set-model-methodfilter와-get의-차이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)