티스토리 뷰

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  (0) 2023.04.28
Static & Media  (0) 2023.04.26
PIP로 설치된 패키지 찾는법  (0) 2023.04.24
Django의 MVT패턴  (0) 2023.04.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함