일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TMS
- python3
- Push
- rank
- Visual Studio
- 델파이
- 백준
- blog
- anaconda3
- Django
- declare
- GIT
- MSSQL
- github
- delphi 10.3
- pyhcarm
- Delphi
- python 3.7
- c#
- PyCharm
- advColumnGrid
- HTML
- queryset
- templates
- dbadvgrid
- pythonanywhere
- COMMIT
- 중복제거
- get_object_or_404
- hackerrank
- Today
- Total
DevHyun
[DevHyun's Blog] Django ORM과 QuerySet 그리고 동적데이터 활용 본문
[DevHyun's Blog] Django ORM과 QuerySet 그리고 동적데이터 활용
D3V3L0P3R 2020. 10. 19. 13:46장고걸스 코치들과 자원봉사자들의 수고로 번역된 글을 참고하였습니다.
Django ORM(Object Relational Mapping)은 OOP 언어와 데이터를 다루는 RDBMS 와의 상이한 시스템을 매핑하여, 데이터 관련 OOP 프로그래밍을 쉽게 하도록 도와주는 기술 입니다.
Django QuerySet은 전달받은 모델의 객체 목록입니다. 데이터베이스로부터 데이터를 읽고, 필터를 걸거나 정렬을 할 수 있습니다.
1. pycharm terminal에서 Django Shell 사용하기
* Shell 이란?
python manage.py shell (InteractiveConsole) 진입! |
2. 모든 객체 조회하기->에러 발생
* shell은 일시적이기 때문에 terminal 종료시 import한 내역들이 초기화됨. 다시 선언해주어야 함.
Post.objects.all() Traceback (most recent call last): File "<console>", line 1, in <module> NameError: name 'Post' is not defined |
3. models.py Import 하기
* 대소문자 주의!
from Blog.models import Post |
4. 모든 Post 출력하기
* admin 페이지에서 Post 작성한 이력이 있으면 출력
Post.objects.all() <QuerySet [<Post: Post 1>, <Post: Post 2>]> |
6. 객체 생성하기(Post 쓰기!)
* Models의 user Import 후 Filtering
* 작성자로서 User(사용자) 모델의 인스턴스를 가져와 전달해줘야 합니다.
* post 제목
* post 내용
from django.contrib.auth.models import User User.objects.all() enter -> <QuerySet [<User: devhyun>]> me = User.objects.get(username='devhyun') Post.objects.create(author=me, title='Sample title', text='Test') |
7. 테스트 용으로 다른 게시자로 몇개 더 추가해보기
admin = User.objects.get(username='admin') Post.objects.create(author=admin, title='Sample title', text='Test') admin1 = User.objects.get(username='admin') Post.objects.create(author=admin,1 title='Sample title', text='Test') |
7. Post 확인
* 새 Post 추가
Post.objects.all() <QuerySet [<Post: Post 1>, <Post: Post 2>, <Post: Sample Title>, <Post: Post 3>, <Post: Post 4>]> |
8. 작성자로 Filtering 하기!
Post.objects.filter(author=me) <QuerySet [<Post: Sample Title>]> |
9. Title 내용으로 Filtering 하기
*title와 contains 사이에 있는 밑줄(_)이 2개(__)입니다. 장고 ORM은 필드 이름("title")과 연산자과 필터("contains")를 밑줄 2개를 사용해 구분합니다.
Post.objects.filter(title__contains='title') <QuerySet [<Post: Sample Title>]> |
10. Published_date 로 Filtering 하기
* timezone util Import 후 Filtering
from django.utils import timezone Post.objects.filter(published_date__lte=timezone.now()) |
11. terminal에서 입력한 Post가 없을경우 Filtering 결과가 없음.
* terminal에서 입력 시 published_date가 입력됨.
12. 기존 Post(admin 페이지에서 테스트로 입력했던 post)를 객체로 저장 후 다시 게시하기(Published_date 입력)
post = Post.objects.get(title="Sample title") post.publish() |
* publish 전
* publish 후
13. Queryset들을 Changiling도 가능!
Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date') |
14. Shell 나가기
exit() |
'Web > Django&Python Blog Projecct' 카테고리의 다른 글
[DevHyun's Blog] Django Template 활용하기 (0) | 2020.10.19 |
---|---|
[DevHyun's Blog] Pythonanywhere 에서 Git Project Pull 한 후 재배포 하기 (0) | 2020.10.19 |
[DevHyun's Blog] Django&Python으로 만든 Blog를 가상환경(pythonanywhere)에서 배포하기! (0) | 2020.10.16 |
[DevHyun's Blog] django 에서 첫 URL 생성 후 view 와 Template만들기! (0) | 2020.10.16 |
[DevHyun's Blog] Django&Python으로 Blog 만들기 - Blog의 관리자 페이지 (0) | 2020.10.16 |