장고에서는 기본적으로 and
연산자 방식으로 필터링(filter
)을 진행합니다. 다음과 같은 경우에는 name & rating
을 모두 만족하는 쿼리셋을 찾는 것입니다.
Book.objects.filter(name='Python Book', rating=5)
Q()
연산자는 논리 연산자 or
에 해당하며 다음과 같이 활용할 수 있습니다.
from django.db.models import Q
Books.objects.filter(Q(name='Python Book' | Q(rating>3))
이렇게하면 데이터베이스에서 name
또는 rating
조건중 하나를 만족하는 데이터를 필터링할 수 있습니다.
eixsts()
를 사용하면 데이터베이스에서 존재 유무를 확인할 수도 있습니다. 이 경우 True
또는 False
가 리턴됩니다.
Book.objects.filter(name='Python Book', rating=5).exists()
다음과 같이 and
와 함께 사용할 수도 있습니다.
Books.objects.filter(Q(name='Python Book' | Q(author='Jeong'), Q(rating>3))
마지막에 Q
를 빼면 앞의 Q
조건문 실행 이후 마지막에 실행됩니다.
Books.objects.filter(Q(name='Python Book' | Q(author='Jeong'), (rating>3))
반응형
'TIL' 카테고리의 다른 글
장고 타임 존 설정하기: 한국 시각 설정 - TIL 9 (0) | 2022.01.20 |
---|---|
HTTP 요청 GET POST 차이점 정리 - TIL 8 (0) | 2022.01.19 |
파이썬 이메일, 비밀번호, URL 유효성 검사 정규 표현식 - TIL 6 (0) | 2022.01.16 |
장고 db_table 이름 지정과 활용 방법 - TIL 5 (0) | 2022.01.12 |
데이터 유형과 데이터베이스 종류 - TIL 4 (0) | 2022.01.11 |