728x90
SMALL
QuerySet이란?
전달받은 model 객체 목록
DB로부터 data를 읽고, filter를 걸거나 정렬 가능
Django shell
장고는 장고 console을 통해서 DB의 모든 객체를 쉽게 조회할 수 있다.
#cmd
(myvenv) ~\django>python manage.py shell
실행 후,
#Django console
(InteractiveConsole)
>>>
- Post 객체 조회
-> Django는 DB 객체를 조회하기 위해서 import를 해줘야 한다.
만약 import 없이 객체 조회를 시도하면, 아래와 같은 오류가 발생한다.
blog model로부터 Post를 import 하기
>>>from blog.models import Post
import한 후, Post.objects.all() 를 명령하면 모든 Post를 보여준다.
- Post 객체 생성
Post객체를 생성하기 위해서, User model로부터 작가(user)를 가져온 후, create 해준다.
User model은 생성하지 않아도 default로 django가 만들어 준다.
>>>from django.contrib.auth.models import User
>>> User.objects.all()
<QuerySet [<User: admin>, <UserL tester1>]> // tester1은 admin page에서 생성했어요.
>>>tester1=User.objects.last() //tester1 변수에 담아주고
>>>Post.objects.create(author=tester1, title='test2 title', content='testing') // post 생성
<Post: test2 title>
>>>Post.Objets.all() //post 생성 확인
<QuerySet [<Post: test title>, <Post: test2 title>]>
위와 같은 과정으로 admin page가 아닌 Django Console로 Data를 조작할 수 있다.
- 생성한 객체 publish
>>> post = Post.objects.get(title="test2 title") //Post model에서 title이 "test2 title"인 것을 가져와서
>>> post.publish() //post 등록하기
- filtering
-> QuerySet의 중요한 기능
-> 특정 조건으로 검색하는 것
#작가로 검색
>>>Post.objects.filter(author=tester1)
<QuerySet [<Post: test title>, <Post: test2 title>]>
#title로 검색 (내용 포함)
>>>Post.objects.filter(title__contains='test2')
//Django ORM은 double underscore 를 통해서 field와 연산자를 구분
<QuerySet [<Post: test2 title>]>
author를 기준으로 tester1과 admin 으로 filtering 한 검색 결과이다.
- 게시일로 filtering
>>> from django.utils import timezone
>>> Post.objects.filter(published_date__lte=timezone.now())
<QuerySet [<Post: test2 title>]>
- 정렬
QuerySet으로 객체 목록을 정렬할 수 있다.
#오름차순
>>> Post.objects.order_by('created_date')
<QuerySet [<Post: test title>, <Post: test2 title>]>
#내림차순
>>> Post.objects.order_by('-created_date')
<QuerySet [<Post: test2 title>, <Post: test title>]>
- QuerySet 연결 (Chaining)
여러 QuerySet을 서로 연결해서 사용할 수 있다.
//모든 post를 created_date 순으로 정렬
>>> Post.objects.all().order_by('created_date')
<QuerySet [<Post: test title>, <Post: test2 title>]>
- QuerySet 종료
>>>exit()
LIST
'Web > django' 카테고리의 다른 글
(Django) first project7 - Bootstrap 적용 및 정적파일 (0) | 2020.08.13 |
---|---|
(Django) first project6 - Model , view, template 데이터 전달 (0) | 2020.08.13 |
(Django) first project5 - Template (0) | 2020.08.12 |
(Django) first project 4 - View (0) | 2020.08.12 |
(Django) first project 3 - urls (0) | 2020.08.12 |