TIL[75].QuerySet API reference

jake.log·2020년 10월 3일
0

QuerySet 객체 반환 메서드

1. all()

데이터 베이스 테이블 내 모든 객체를 반환
ex)Entry.objects.all

2. filter()

지정된 변수와 일치하는 객체를 반환
ex)Entry.objects.filter(pub_dateyear=2006)
Entry.objects.all.filter(pub_date
year=2006)

3. exclude()

지정된 변수와 일치하지 않는 객체를 반환
ex)Entry.objects.exclude(id__lt=5)

4. get()

쿼리와 일치하는 객체가 하나만 있으면 반환,없으면 DoesNotExis
ex) one_entry = Entry.objects.get(pk=1)

5. 제한하는 쿼리셋

  • order_by(정렬) : 지정한 필드를 기준으로 오름차순정렬. 내림차순은 ‘-‘를 붙인다.
    제목별로 알파벳순으로 항목을 정렬한 후 첫번째 항목 반환
    ex)Entry.objects.order_by('headline')[0]

  • [시작위치:끝위치] 범위 안에 데이터만 가져오기
    ex) Entry.objects.all()[:5] LIMIT5
    Entry.objects.all()[5:10] OFFSET5 LIMIT5

음수 인덱스는 지원하지 앟음.

  • distinct(필드이름) : 필드의 이름이 같다면 겹치지 않게 가져온다.

6.count()

데이터의 개수를 반환해준다.
ex)
Entry.objects.count()
Entry.objects.filter(headline__contains='lennon').conunt()

7.first()

첫번째 객체를 반환해준다.
ex) Article.objects.order_by('title', 'pub_date').first()

8.last()

마지막 객체 반환
ex) Article.objects.order_by('title', 'pub_date').last()

9.update()

지정된 필드만 갱신
(일부 데이터만 변경하더라도 save()로 저장하면 모델의 필드 전체 변경)

ex)Article.objects.filter(id=1).update(title=“abc”)

10.delete()

데이터를 삭제할 때 사용
ex)Article.objects.delete(id=1)

11.get_or_create(조건, deaults=생성할 데이터의 값)

지정한 데이터를 가져오되 없을 경우에는 새로 만든다.
생성될 데이터의 값은 dict 객체로 지정한다.
ex)Person.objects.get_or_create(
first_name='John',
last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)},
)

12.update_or_create(조건, default=생성할 데이터의 값)

업데이트하되 없으면 새로 생성한다.
ex)Person.objects.update_or_create(
first_name='John', last_name='Lennon',
defaults={'first_name': 'Bob'}
)

13.exact

정확히 일치하는 데이터 확인
ex)Entry.objects.get(id__exact=14)

14.iexact

대소문자 구분하지고 않고 일치하는 데이터 확인
ex)Blog.objects.get(name__iexact='beatles blog')

15.contains

지정한 문자열을 포함하는 데이터 탐색
ex)Entry.objects.get(headline__contains='Lennon')

16.icontains

대소문자 무시
ex)Entry.objects.get(headline__icontains='Lennon')

17.in

리스트나 튜플 자료형이 있는 값들에 해당하는 데이터 탐색
ex)Entry.objects.filter(idin=[1, 3, 4])
Entry.objects.filter(headline
in='abc')

18.gt

지정한 값을 초과하는 데이터(greater than)
ex)Entry.objects.filter(id__gt=4)
4보다 큰 값을 가져온다.
SELECT ... WHERE id > 4;

19.gte

지정한 데이터보다 크거나 같음
ex)Entry.objects.filter(id__gte=5)
5보다 크거나 같은 값을 가져온다.

20.lt

지정한 값미만 (less than)
ex)Entry.objects.filter(id__lt=4)
4보다 작은값을 가져온다.

21.lte

지정한 값 이하
ex)Entry.objects.filter(id__lte=4)
4보다 작거나 같은 값을 가져온다.

22.startswith

지정한 문자열로 시작하는 데이터
ex)Entry.objects.filter(headline__startswith='Lennon')
SELECT ... WHERE headline LIKE 'Lennon%';

23.istartswith

대소문자 무시
ex)Entry.objects.filter(headline__istartswith='Lennon')
SELECT ... WHERE headline ILIKE 'Lennon%';

24.endswith

지정한 문자열로 끝나는 데이터
ex)Entry.objects.filter(headline__endswith='Lennon')
SELECT ... WHERE headline LIKE '%Lennon';

25.iendswith

대소문자 무시
ex)Entry.objects.filter(headline__iendswith='Lennon')
SELECT ... WHERE headline ILIKE '%Lennon'

26.range

범위에 해당하는 데이터를 가져온다. 리스트나 튜플로 지정
ex)import datetime
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2005, 3, 31)
Entry.objects.filter(pub_date__range=(start_date, end_date))
SELECT ... WHERE pub_date BETWEEN '2005-01-01' and '2005-03-31';

profile
꾸준히!

0개의 댓글