(출처 The Django Book)
장고에서는 여러 종류의 데이터를 데이터베이스 종류와는 독립적인 형태로 객체화 한다. (ORM)
쿼리셋은 쉽게 말하자면 전달받은 모델의 객체 목록이다.
다음부터 장고걸스 튜토리얼을 보면서 따라해보는 연습이다.
1. 모든 객체 조회하기
python manage.py shell
from blog.models import Post
Post.objects.all()
장고에서 python shell을 연 다음 모델에서 포스트를 임포트해온다.
모든 객체를 불러오려면 all()을 사용한다.
Post.objects.create(author=me, title='sample', text='test')
이 부분에서 작성자로서 User 모델의 인스턴스를 가져와 전달해준다. 먼저 User 모델을 불러온다.
from django.contrib.auth.models import User
me = User.objects.get(username = 'ola')
Post.objects.create(author =me, title='sample', text='test')
쿼리셋의 중요한 기능은 데이터르르 필터링하는 것. 예를 들어, ola가 작성한 모든 글을 찾고 싶다고 하면
Post.objects.filter(author=me)
모든 글 중에 제목에 title이라는 글자가 들어간것만 보고 싶다면
Post.objects.filter(title__contains='title')
게시일로 과거에 작성한 글을 필터링하면 목록을 불러올 수 있다.
from django.utils import timezone
Post.objects.filter(published_date__lte = timezone.now())
post = Post.objects.get(title = 'sample')
post.publish()
Post.objects.filter(published_date__lte =timezone.now())
Post.objects.order_by('created_date')
Post.objects.order_by('-created_date') #내림차순
Post.objects.filter(published_date__lte = timezone.now()).order_by('published_date')