# get()
get()은
보통 쓰일때, 미리 class를 만들어줘야하며
클래스명.objects.get(조건)
이렇게 쓰인다.
그리고 get()에서 조건을 통해 가져올 수 있는것은 오직 1개의 result이며
2개이상은 에러가 난다.
# filter()
filter()는 get과 사용방식은 같다.
하지만 조건에 맞는것을 모두 리턴한다.
실제로 쓰인 코드는 이렇게 쓰였다.
Patient.objects.filter(last_name=‘smith’)
만약 필터로 쓰고 싶은 조건이 1개가 아니라 2개 이상으로
더 세부적으로 검색하고 싶다면
Patient.objects.filter(last_name=‘smith’).filter(age<40)
이런식으로
last_name이 smith이고
나이다 40 미만인 사람들로 추려볼 수도 있다.
# Q
Q는 사실 굳이 왜 사용해야하는가? 싶지만
추후 look up(룩업)같은 복잡한 기능을 다룰때 사용되는 거라고 한다.
look up은 배웠지만 뭔지는 정확히 모르겠네
Q는 기본적으로 or조건 혹은 and 조건으로 사용될 수 있고
이것을 사용하기 위해서는 모듈을 임포트 해야한다.
from django.db.models import Q
그리고 사용 예시는
Patient.objects.filter(Q(last_name='smith')& Q(age=40)).all()
이렇게 하였으며 여기서 주의점은
1.&는 and 를 의미하며 or의 조건을 원한다면 | 로 대체해주면 된다.
2.all()은 굳이 안써도 사용엔 문제가 없는것 같다.
# look up(룩업)
# 예시1
# last_name이 s로 시작하는 자료를 찾아줘
Patient.objects.filter(last_name__startswith = 's').all()
# 예시2
age가 20, 30, 40 중에 해당사항이 있다면 리턴해줘
Patient.objects.filter(age__in = [20,30,40]).all()
# 예시3
gte는 greater then or equal 이라는 의미로써
‘크거나 같음’ 을 의미한다.
더 쉽게는 ‘이상’
# age가 39세 이상인 자료를 찾아줘
Patient.objects.filter(age__gte = 39).all()
그외 gte와 같은 내장함수는
https://docs.djangoproject.com/en/4.1/ref/models/querysets/#field-lookups
여기를 참고하자.
이것은 django API공식문서로써 매우 중요하다.
# order_by 정리
예시
Patient.objects.order_by('age').all()
'개발일지 > 임시카테고리' 카테고리의 다른 글
Django - 데이터베이스 모델 연결하기 (1) | 2022.09.30 |
---|---|
Django - 동의어, 엔트리 삭제시 메모리값 (1) | 2022.09.30 |
Django - 필터처리 (1) | 2022.09.30 |
Django - vscode html 자동완성입력 작동안됨 (해결) (1) | 2022.09.30 |
Django - 동적 뷰, 라우팅 조작 (어려움) (0) | 2022.09.29 |