DB를 조회할때 기본 메서드만 사용할 경우 Queryset으로 데이터를 반환한다.
하지만 조건을 붙여서 조회할 경우 List형으로 데이터를 반환한다!
# Model 테이블의 id가 1인 레코드
Model.objects.filter(id=1)
# Model 테이블의 col 컬럼이 hello로 시작하는 레코드
Model.objects.filter(col__startwith='hello')
# 올해생성된 데이터 조회
current_year = timezone.now().year
Model.objects.filter(pub_date__year=current_year)
# [M:n] 범위지정
Model.objects.all()[3:6]
# 컬럼별 오름/내림차순을 지정하여 범위지정 데이터를 가져올 수 있다.
Model.objects.all().order_by('col')[3:6]
pk
, id
등 특정 컬럼 지정[m,n]
인덱스 지정.order_by
차순지정추가 연산자를 사용하기 위해선
컬럼명__추가연산자(속성)
식으로 사용한다.
컬럼명__속성__속성__속성
: 과 같이 사용할 수 있다
예:Model2.objects.filter(model1__pub_date__year=2020)
: Model1 =1, Model2 = 다 의 관계에서 Model2의 데이터를 필터링해서 가져온다.
FK인 Model1 의 pub_date 컬럼의 year 가 2020인 데이터를 가저온다.
__startwith
: 시작 단어 지정
__endswith
: 끝나는 단어 지정
__icontains
: 문자열에 포함 단어 지정
# 연산자 |, & 를 사용하기 위해 Q를 import 해야한다.
from django.db.models import Q
Model.objects.all().filter(Q(컬럼=값) | Q(컬럼=값)) # or
Model.objects.all().filter(Q(컬럼=값) & Q(컬럼=값)) # and