[Django] 필터링

채린·2023년 9월 1일

외래키의 필드로 필터링

Comment는 Post를 외래키로 하는 post이라는 필드를 가진다.
Post은 User를 외래키로 하는 user라는 필드를 가진다.
Comment 객체들 중 post의 user로 필터링 하려면

comments=Comment.objects.filter(Q(post__user=14)

(Q 객체를 사용함으로써 여러 개의 조건을 조합하여 복잡한 쿼리를 작성할 수 있으며, 이를 통해 데이터베이스에서 원하는 결과를 더 정밀하게 가져올 수 있습니다.)

해당 값이 ~~중에 존재하는지

field__in="객체들"

lines=Line.objects.filter(line_post=post.post_id).all()
if Question.objects.filter(que_line__in=lines).exists():
	post.is_que=True

비교연산자

exact (정확히 일치):
     MyModel.objects.filter(field__exact="원하는 문자열")

iexact (대소문자 무시하고 정확히 일치):
     MyModel.objects.filter(field__iexact="원하는 문자열")

contains (포함):
     MyModel.objects.filter(field__contains="원하는 문자열")

icontains (대소문자 무시하고 포함):
     MyModel.objects.filter(field__icontains="원하는 문자열")

startswith (문자열로 시작):
     MyModel.objects.filter(field__startswith="원하는 문자열")

istartswith (대소문자 무시하고 문자열로 시작):
     MyModel.objects.filter(field__istartswith="원하는 문자열")

endswith (문자열로 끝):
MyModel.objects.filter(field__endswith="원하는 문자열")

iendswith (대소문자 무시하고 문자열로 끝):
     MyModel.objects.filter(field__iendswith="원하는 문자열")

gt (초과):
     MyModel.objects.filter(field__gt="원하는 문자열")

gte (이상):
     MyModel.objects.filter(field__gte="원하는 문자열")

lt (미만):
     MyModel.objects.filter(field__lt="원하는 문자열")

lte (이하):
     MyModel.objects.filter(field__lte="원하는 문자열")

range (범위):
     MyModel.objects.filter(field__range=("최소값", "최대값"))

0개의 댓글