장고 테이블을 세부적으로 filter하기

sen·2022년 11월 13일
0

공식문서: https://docs.djangoproject.com/en/4.1/topics/db/queries/#retrieving-specific-objects-with-filters

기본 문법

filter

테이블 이름.objects.filter(테이블 컬럼=)

테이블 내 컬럼 = 해당 값인 모델들을 반환

exclude

테이블 이름.objects.filter(테이블 컬럼=)

테이블 내 컬럼 != 해당 값인 모델들을 반환


추가 문법

  • 컬럼 뒤에 __옵션 을 붙여서 검색한다
  • 앞에 i 가 붙으면 대소문자를 구분하지 않는다는 의미이다

exact, iexact

Entry.objects.filter(컬럼__exact=문자열)
Entry.objects.filter(컬럼__exact=None)

정확히 문자열이 컬럼의 값과 일치하는 모델을 반환한다

contains, icontains

Entry.objects.filter(컬럼__contains=문자열)

컬럼의 값이 해당 문자열을 포함하는 모델을 반환한다

in

Entry.objects.filter(id__in=[1, 2])
: SELECT ... WHERE id IN (1, 2);

sql의 IN 과 같은 역할로 iterable한 객체가 뒤에 올 수 있다

gt, gte, lt, lte

Entry.objects.filter(id__gt=1)
: SELECT ... WHERE id > 1;

각각 >, >=, <, <= 을 의미한다

startswith, istartswith, endswith, iendswith

Entry.objects.filter(name__startswith='sen')

파이썬의 문자열 메서드(https://velog.io/@dahyen0o/파이썬-문자열-내-특정-문자열-찾기 참고)와 같은 역할을 한다

range

import datetime
start_date = datetime.date(2000, 1, 1)
end_date = datetime.date(2000, 1, 31)
Entry.objects.filter(created_at__range=(start_date, end_date))

해당 범위에 해당하는 모델을 찾는다

profile
𝙝𝙞 𝙩𝙝𝙚𝙧𝙚 😎

0개의 댓글

관련 채용 정보