데이터 베이스 테이블 내 모든 객체를 반환
ex)Entry.objects.all
지정된 변수와 일치하는 객체를 반환
ex)Entry.objects.filter(pub_dateyear=2006)
Entry.objects.all.filter(pub_dateyear=2006)
지정된 변수와 일치하지 않는 객체를 반환
ex)Entry.objects.exclude(id__lt=5)
쿼리와 일치하는 객체가 하나만 있으면 반환,없으면 DoesNotExis
ex) one_entry = Entry.objects.get(pk=1)
order_by(정렬) : 지정한 필드를 기준으로 오름차순정렬. 내림차순은 ‘-‘를 붙인다.
제목별로 알파벳순으로 항목을 정렬한 후 첫번째 항목 반환
ex)Entry.objects.order_by('headline')[0]
[시작위치:끝위치] 범위 안에 데이터만 가져오기
ex) Entry.objects.all()[:5] LIMIT5
Entry.objects.all()[5:10] OFFSET5 LIMIT5
음수 인덱스는 지원하지 앟음.
데이터의 개수를 반환해준다.
ex)
Entry.objects.count()
Entry.objects.filter(headline__contains='lennon').conunt()
첫번째 객체를 반환해준다.
ex) Article.objects.order_by('title', 'pub_date').first()
마지막 객체 반환
ex) Article.objects.order_by('title', 'pub_date').last()
지정된 필드만 갱신
(일부 데이터만 변경하더라도 save()로 저장하면 모델의 필드 전체 변경)
ex)Article.objects.filter(id=1).update(title=“abc”)
데이터를 삭제할 때 사용
ex)Article.objects.delete(id=1)
지정한 데이터를 가져오되 없을 경우에는 새로 만든다.
생성될 데이터의 값은 dict 객체로 지정한다.
ex)Person.objects.get_or_create(
first_name='John',
last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)},
)
업데이트하되 없으면 새로 생성한다.
ex)Person.objects.update_or_create(
first_name='John', last_name='Lennon',
defaults={'first_name': 'Bob'}
)
정확히 일치하는 데이터 확인
ex)Entry.objects.get(id__exact=14)
대소문자 구분하지고 않고 일치하는 데이터 확인
ex)Blog.objects.get(name__iexact='beatles blog')
지정한 문자열을 포함하는 데이터 탐색
ex)Entry.objects.get(headline__contains='Lennon')
대소문자 무시
ex)Entry.objects.get(headline__icontains='Lennon')
리스트나 튜플 자료형이 있는 값들에 해당하는 데이터 탐색
ex)Entry.objects.filter(idin=[1, 3, 4])
Entry.objects.filter(headlinein='abc')
지정한 값을 초과하는 데이터(greater than)
ex)Entry.objects.filter(id__gt=4)
4보다 큰 값을 가져온다.
SELECT ... WHERE id > 4;
지정한 데이터보다 크거나 같음
ex)Entry.objects.filter(id__gte=5)
5보다 크거나 같은 값을 가져온다.
지정한 값미만 (less than)
ex)Entry.objects.filter(id__lt=4)
4보다 작은값을 가져온다.
지정한 값 이하
ex)Entry.objects.filter(id__lte=4)
4보다 작거나 같은 값을 가져온다.
지정한 문자열로 시작하는 데이터
ex)Entry.objects.filter(headline__startswith='Lennon')
SELECT ... WHERE headline LIKE 'Lennon%';
대소문자 무시
ex)Entry.objects.filter(headline__istartswith='Lennon')
SELECT ... WHERE headline ILIKE 'Lennon%';
지정한 문자열로 끝나는 데이터
ex)Entry.objects.filter(headline__endswith='Lennon')
SELECT ... WHERE headline LIKE '%Lennon';
대소문자 무시
ex)Entry.objects.filter(headline__iendswith='Lennon')
SELECT ... WHERE headline ILIKE '%Lennon'
범위에 해당하는 데이터를 가져온다. 리스트나 튜플로 지정
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';