ORM은 파이썬과 데이터베이스의 SQL 사이의 통역사
쿼리문이 없어도 Model Class을 통해서 객체를 만들고 이객체를 통해서 DB에 접근
빠르고 불필요한 것들을 자동으로 처리
선언문할당 종료같은 부수적인 코드가 줄고 객체에 대한 코드만 작성하니 가독성이 좋다
유지 보수와 재사용성
ORM 라이브러리를 따로 공부가 필요
규모가 크거나 복잡한 프로젝트는 sql이 더 효율적
SQL문을 추상적으로 구현하여, 복잡한 쿼리는 비효율적인 SQL 구문이 생성됨
쿼리셋은 데이터베이스의 여러 레코드를 나타낸다
from .models import Category
Category.objects.all()
>>> <QuerySet [<Category: 제목1>, <Category: 제목2>] >
DB와 Django Model 사이의 QueryOperation(질의 연산)의 인터페이스 역할
#1
>>> Blog.objects.filter(name__startswith='Beatles')
<QuerySet [<Blog: Beatles Blog>]>
#2
>>> Blog.objects.filter(name__startswith='Beatles').values()
<QuerySet [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]>
.get()
은 쿼리셋이 아니라 모델 객체를 반환하는 메소드