Home Django 모델을 통한 조회 (기초)
Post
Cancel

Django 모델을 통한 조회 (기초)

인프런 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 보고 정리한 내용입니다.


Model Manager

데이터베이스 질의 인터페이스를 제공

디폴트 Manager로서 ModelCls.objects가 제공

아래처럼 사용

1
2
3
ModelCls.objects.all()
ModelCls.objects.all().order_by('-id')[:10]
ModelCls.objects.create(title="New Title")

QuerySet

SQL을 생성해주는 인터페이스

순회가능한 객체

Model Manager를 통해, 해당 Model에 대한 QuerySet을 획은

  • Post.object.all() … → “SELECT * FROM Post”
  • Post.objects.create(…) “INSERT INTO …”

QuerySet의 Lazy한 특성이 있음

무슨 의미인가 하면, 아무리 아래처럼 쿼리 셋에 조건을 추가해도 아직 실제로 쿼리를 날리지는 않는다.

1
qs = Post.objects.all().order_by('-id')[:2}

실제로 쿼리를 해서 데이터를 가져오는 시점은 qs를 호출할 때이다. (실제로 데이터가 필요할 때)

Query는 Chaining 가능

Post.objects.all(…).filter.exclude(…).filter(…) → QuerySet

  • 마치 mongoDB의 aggregation pipeline

enter를 쳐서 line을 구분하려면 아래처럼 backslash를 넣어주어야 함

Query Set 모델객체 획득

queryset[숫자인덱스]

  • 모델객체 혹은 없으면 예외발생 (IndexError)
1
queryset.get(...)
  • 모델객체 혹은 없으면 예외발생 (DoesNotExist, MultipleObjectsReturned)
1
queryset.first()
  • 모델객체 혹은 None
1
queryset.last()
  • 모델객체 혹은 None

예시

조건 추가

This post is licensed under CC BY 4.0 by the author.