filter 검색

BackEnd_Ash.log·2020년 5월 7일
0

보통

User.objects.filter(email = email)

을 하게되면 User 데이터 베이스에서 해당하는 email 이 있는지 찾아줘서 쿼리셋으로 보내준다.

Lookup Filter

모델.objects.filter(필드이름__lookup = 값)

contains lookup

__contains

In [9]: Product.objects.filter(name__contains="얼")
Out[9]: <QuerySet [<Product: Product object (5)>]>

name 필드에 얼이 포함되어있는 데이터를 가져와서 쿼리셋으로 뿌려주게 됩니다.

icontains lookup

__icontains
case-insensitive(무감각한) 로써 대소문자 구분없이 판단합니다.

icontains 는 대소문자 구분하지 않고 가져오게 된다 .

User.objects.filter(name__icontains="J")
QuerySet [<User: jakdu : jakdu@mail.com>...]

isnull lookup

__isnull
해당 필드에 유효한 값이 있는 모든 튜플들을 출력합니다.

In [11]: Product.objects.filter(name__isnull=False)
Out[11]: <QuerySet [<Product: Product object (1)>,
<Product: Product object (2)>, 
<Product: Product object (3)>, 
<Product: Product object (4)>, 
<Product: Product object (5)>,
<Product: Product object (6)>,
<Product: Product object (7)>,
<Product: Product object (8)>]>

in look_up

__in
필드 일치조건을 [List] 형식으로 입력합니다.

In [14]: Product.objects.filter(name__in=["육","얼"])
Out[14]: <QuerySet []>

In [15]: Product.objects.filter(name__in=["육개장","씨리얼"])
Out[15]: <QuerySet [<Product: Product object (3)>, 
<Product: Product object (5)>]>

contains 처럼 포함되는것이 아니라 완전히 일치를 해야 검색이 됩니다.

참고자료
https://yongbeomkim.github.io/django/dj-filter-orm-basic/

profile
꾸준함이란 ... ?

0개의 댓글