반응형
Model Manager
기본적인 인터페이스를 제공하는 것은 ModelCls.objects가 제공하게 된다.
ModelCls.objects.all()
ModelCls.objects.all() .order_by(”-id)[:10]
ModelCls.objects.create(title="New Title")
qs = Post.objects.all().order_by('-id')[:2] #id 부분에 정렬 기준이 될 column을 넣음
print(qs.query)
qs
ㅇ
위와 같이 정렬도 가능하다.
query = "번째"
qs = Post.objects.all()\
.filter(message__icontains=query)\
.order_by('-id')
print(qs.query)
qs
r 채이닝 쿼리가 여러줄이 나올때, 다른 프로그램처럼 그냥 엔터를 치면 오류가 난다.
그래서 맨뒤에 역슬래쉬 \ 를 붙여주는 것으로 다음 줄과 같은 라인에 있는 취급을 해줘야 한다.
또는 아래와 같이 처리가 가능하다
qs = Post.objects.all()
qs = qs.filter(message__icontains=query)
qs = qs.order_by('-id')
QuerySet
은 Lazy 한 특성을 갖고있기 때문에, QuerySet
을 만드는 동안에는 DB 접근을 하지 않는다.
실제로 데이터가 필요한 시점(print
문,list
,for
내에서 실제로 데이터가 쓰일때) db
에 접근을 하게 됩니다. (JPA
에서 queryFactory
로 조건문을 만들 때, fetch
하기 전까지는 db에 쿼리를 날리지 않는 것과 동일)
하나의 객체를 가져올 때
queryset.get(조건)
queryset.first()
queryset.last()
- get을 사용하는 경우, 하나 이상의 값을 반환하거나, 값이 없는 경우 에러를 발생시킨다.
- first나 last의 경우에는 하나의 값을 반환하거나, None을 반환한다.
Uploaded by N2T
반응형
'Python > Django' 카테고리의 다른 글
OneToOneField (0) | 2023.04.28 |
---|---|
Django Reverse_name (1) | 2023.04.28 |
Static & Media (0) | 2023.04.26 |
PIP로 설치된 패키지 찾는법 (1) | 2023.04.24 |
Django의 MVT패턴 (0) | 2023.04.24 |