Django

장고(Django) - Field lookup

티베트 모래여우 2020. 10. 9. 19:54
반응형

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를 참고하시면 됩니다.

 

QuerySet API reference | Django documentation | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

개인적으로 자주 쓰는 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, 즉 대소문자를 구별하지 않음을 의미합니다.

반응형