Field lookup
- SQL의 WHERE에 해당되는 기능
- filter, get, exclude 메소드로 얻게 되는 Queryset을 조건에 맞게 제한
- 어떤 lookup type에도 해당이 안 될 경우(Example.objects.get(id=1)) 자동적으로 exact로 적용
- 사용법은 fieldname__lookuptype (Example.objects.get(id__exact=1)
- lookup의 종류는 꽤 많으니 Django documentation를 참고하시면 됩니다.
개인적으로 자주 쓰는 lookup type을 몇개만 기술하자면
__exact : 정확히 일치
__contains : 포함하는지
__gt : 큼
__gte : 크거나 같음
__lt : 작음
__lte : 작거나 같음
__startwith : 시작하는지
__endwith : 끝나는지
SQL 쿼리문과 비교해봅시다.
Field lookup SQL Query
Example.objects.get(id__exact=1) | SELECT ... WHERE id = 1;
Example.objects.get(id__contains='Lookup') | SELECT ... WHERE test LIKE '%Lookup%';
Example.objects.get(id__gt=1) | SELECT ... WHERE id > 1;
Example.objects.get(id__gte=1) | SELECT ... WHERE id >= 1;
Example.objects.get(id__lt=1) | SELECT ... WHERE id < 1;
Example.objects.get(id__lte=1) | SELECT ... WHERE id <= 1;
Example.objects.get(id__startwith='Lookup') | SELECT ... WHERE test LIKE 'Lookup%';
Example.objects.get(id__endwith='Lookup') | SELECT ... WHERE test LIKE '%Lookup';
* exact나 contains같은 몇몇 lookup type은 앞에 i를 붙여서 사용하기도 하는데 여기서 i는 case insensitive, 즉 대소문자를 구별하지 않음을 의미합니다.
'Django' 카테고리의 다른 글
장고(Django) - 마이그레이션(Migration) (4) | 2020.11.12 |
---|---|
장고(Django) - WSGI(Web Server Gateway Interface) (1) | 2020.11.12 |
ORM(Object Relational Mapping)이란? (2) | 2020.10.20 |
장고(Django) - MVC패턴과 MTV패턴 (0) | 2020.10.19 |
Django란? (0) | 2020.10.09 |