장고 쿼리셋API에서 새 쿼리셋을 반환하는 메서드와 객체를 반환하는 메서드의 차이

개발자 강세영·2022년 5월 12일
0

TIL

목록 보기
27/66

둘간의 차이점을 모르겠어서 나름대로 정리해봤다
일단 Queryset이란 용어의 의미를 알아야 한다.

장고 공식문서
A QuerySet represents a collection of objects from your database. It can have zero, one or many filters. Filters narrow down the query results based on the given parameters. In SQL terms, a QuerySet equates to a SELECT statement, and a filter is a limiting clause such as WHERE or LIMIT.

You get a QuerySet by using your model’s Manager. Each model has at least one Manager, and it’s called objects by default. Access it directly via the model class, like so:

결국 쿼리셋(Queryset)은 DB에서 뽑아온 여러 객체의 집합을 의미하는것이다.
SQL로는 SELECT로 가져오고 WHERE LIMIT 등으로 필터링 한 것과 같다

filter(), order_by(), values(), all(), intersection(), select_related(), defer(), extra() 등이 새 쿼리셋을 리턴하는 메서드이다.
그래서 이런것들은 모든 값을 조회하거나 속성값대로 정렬하거나 교집합을 만들거나 하는데 쓴다. 데이터 객체들을 많이 뽑아놓으려면 이런것들을 쓰면된다.

쿼리셋이 아닌 객체 자체나 어떤 값을 리턴하는것들은 get(),first(),last() 나 create(), count() 같은 것들이다.
원하는 객체만 얻고 싶거나 카운트 값같이 특정한 값을 얻고 싶을때 또는 데이터를 추가하거나 수정하거나 삭제하는 메서드들이 여기에 포함된다.

0개의 댓글