QuerySet은 연산자를 묶어주는 역할을 함
Room.objects.all()을 했을 때 Rom의 배열만 갖게된다면 이상적이지 않음
-> 왜냐하면 배열만으로 받게 된다면 filter나 다른 값들을 체인으로 받을 수가 없음
-> chain으로 받게 해주는 게 QuerySet임
# Queryset으로 return을 주기때문에 아래와 같이 사용이 가능한 것임
Room.objects.filter(pet_friendly=True).exclude(price__lt=12).filter(name__contains="서울")
# 근데 굳이 filter 체인 할 필요없이 아래와 같이 해도 됨
>>> Room.objects.filter(pet_friendly=True, name__contains="서울", price__gt=11)
#QuerySet은 lazy함, Room의 데이터에 직접 접근하기전까지는 데이터베이스와 통신하지않음
Room.objects.all():
>>> for room in Room.objects.all():
... print(room.name)
...
Beautiful House in 서울
Apt in 서울
# 숫자도 셀 수 있음
>>> Room.objects.filter(pet_friendly=True).count()
2