Column(Field) Lookup
→ Filter 조건을 사용하면 좀 더 복잡한 조건도 조회할 수 있음
→ filter, exclude 혹은 get 메소드 내에 검색을 원하는 필드명과 field lookup을 붙여서 값을 전달
→ 형태 : {field명}__{조건 키워드(lookup type)}
▶ python manage.py shell : manage.py를 쉘로 실행
▶ from third.models import Restaurant : third 웹 앱에 있는 models.py 파일에서 Restaurant class를 불러옴
▶ Restaurant.objects.filter(name='Korean Food') : Restaurant 클래스에 있는 객체들 중 name 필드가 'Korean Food'인 쿼리를 불러옴
▶ Contains : 특정 키워드가 포함된 레코드를 조회
→ __exact를 붙여주지 않아도 별도의 조건을 달아주지 않으면 __exact 조건과 동일한 기능을 수행함
▶ Restaurant.objects.filter(name__contains='Korean').values() : name 필드에 'Korean' 키워드가 포함된 쿼리를 불러옴
▶ Exact : 특정 키워드랑 정확하게 일치하는 레코드 조회
▶ Restaurant.objects.filter(name__exact = 'Korean Food') : name 필드에 'Korean Food' 키워드가 정확하게 일치되는 쿼리를 불러옴
▶ __gt : (greater than) 더 큰 레코드
▶ __gte : (greater than + equal) 더 크거나 같은 레코드
▶ __lt : (less than) 더 작은 레코드
▶ __lte : (less than + equal) 더 작거나 같은 레코드
▶ Restaurant.objects.filter(created_at__gt = '2018-01-01 00:00:00').values() : 작성된 일자가 2018년 1월 1일 00시 00분 00초보다 큰 쿼리를 불러옴
▶ Restaurant.objects.filter(created_at__gte = '2018-01-01 00:00:00').values() : 작성된 일자가 2018년 1월 1일 00시 00분 00초보다 크거나 같은 쿼리를 불러옴
▶ __startswith : 특정 문자열로 시작하는 레코드
▶ __endswith : 특정 문자열로 종료되는 레코드
▶ Restaurant.objects.filter(name__Startswith = 'Korean').values() : name 필드에 'Korean'으로 시작되는 쿼리를 불러옴
▶ Restaurant.objects.filter(name__Startswith = 'Food').values() : name 필드에 'Food'으로 시작되는 쿼리를 불러옴
→ 'Food'로 시작되는 레코드는 존재하지 않아 빈 쿼리 출력
▶ Restaurant.objects.filter(name__endswith = 'Food').values() : name 필드에 'Food'으로 종료되는 쿼리를 불러옴
▶ __in : 여러 값을 한 번에 검색 조건으로 걸 때 사용
▶ Restaurant.objects.filter(id__in=[1,3]).values() : id 필드의 값이 1부터 3 사이인 쿼리를 불러옴
▶ range : 특정 값 사이의 레코드를 조회
▶ Restaurant.objects.filter(id__range=(2,3)).values() : id 필드의 값이 2부터 3 사이인 쿼리를 불러옴
'Django > inflearn' 카테고리의 다른 글
R : 리스트 구현하기 (0) | 2022.11.07 |
---|---|
데이터 수정/삭제하기 (0) | 2022.11.06 |
페이징하기 (2) | 2022.11.04 |
데이터 필터링하기 (0) | 2022.11.03 |
데이터 조회하기 (0) | 2022.11.02 |