CS 면접 준비

TIL230726 Django ORM에서 queryset과 object의 차이점에 대해서 설명하시오

베스트오버 2023. 7. 26.

Django ORM에서 QuerySet과 Object는 각각 다른 역할과 특징을 가지고 있습니다.

 

  QuerySet은 Django 모델의 데이터베이스 쿼리 인터페이스를 나타냅니다. QuerySet은 데이터베이스로부터 데이터를 읽고 필터를 적용하거나 정렬하는 등의 작업을 할 수 있습니다. 또한, QuerySet은 'lazy'합니다. 이는 실제로 데이터베이스에 쿼리를 실행하는 것이 필요한 시점까지 쿼리의 실행을 미룬다는 뜻입니다. 예를 들어, Post.objects.all()은 모든 Post 객체를 가져오는 QuerySet을 반환하지만, 이 때 데이터베이스에 쿼리가 실행되는 것이 아니라, 이 QuerySet을 반복하거나 실제로 데이터를 사용할 때 쿼리가 실행됩니다. 이러한 특성 덕분에 QuerySet은 체이닝을 지원하며, 필요한 만큼 여러 필터나 조건을 추가할 수 있습니다.

 

  반면에, Object는 실제 Django 모델의 인스턴스를 나타냅니다. 각 Object는 데이터베이스 테이블의 한 행을 나타내며, 각 필드는 테이블의 열에 해당합니다. Object는 모델에 정의된 메소드를 사용할 수 있으며, 각각의 필드 값을 가지고 있습니다.

간단히 말해, QuerySet은 데이터베이스로부터 데이터를 가져오는 방법을 정의하고, Object는 그 결과로 가져온 실제 데이터를 나타냅니다.

 

예를 들어, Post.objects.filter(title__contains='Django')는 'Django'가 제목에 포함된 Post 객체들을 가져오는 QuerySet을 반환하고, 이 QuerySet에 대해 반복하면 실제 Post Object들을 얻을 수 있습니다.

 

댓글