공식문서 : https://docs.djangoproject.com/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet
Django ORM : 우리가 만든 모델 클래스와 DB에 생성된 테이블을 자동으로 연관지어 주는 기술. python 문법을 통해서 DB를 조작할 수 있다.
실습(4)에서 만들어둔 모델과 DB를 이용해서 ORM 사용해보기.
python manage.py shell
blog / models.py 에서 Post 클래스 import 하기
>>> from blog.models import Post
# blog / models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=100)
contents = models.TextField()
main_image = models.ImageField(blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
READ
all : 모든 요소에 접근할 때 사용
get : 특정 요소를 정확히 알고 있을 때 사용. 요소에 접근할 때에는 점을 사용
count : 요소의 개수 카운팅
filter : 조건에 맞는 값을 반환
exclude : 조건에 맞지 않는 값을 반환
조건 연산자를 붙일 때에는 언더바 두개를 붙임. ex) id__lt=3
contains : 포함
icontains : 대소문자 상관없이 포함
startswith : 앞에 매칭
endswith : 뒤에 매칭
eq : equal ( = )
ne : not equal ( != )
lt : lower than ( < )
le : lower or equal ( <= )
gt : greater than ( > )
ge : greater or equal ( >= )
Create
create를 통해서 새로운 객체를 생성하고, save로 저장
Delete
객체를 지정하고 delete로 삭제
Update
객체를 지정하고 수정 후, save로 업데이트
이렇게 데이터 Create, Read, Update, Delete를 CRUD 라고 한다.
날짜 비교
created_at 이라는 연도 필드가 있을 때,
연도와 일치되는 게시물
Post.objects.filter(created_at__year=2023)
월이 일치하는 게시물
Post.objects.filter(created_at__month=10)
일이 일치하는 게시물
Post.objects.filter(created_at__day=17)
년, 월, 일에 매칭이 되는 게시물
gt, lt, gte(greater than or equal), lte 를 사용
Post.objects.filter(created_at__gte=date(2023,10,17))
'Django' 카테고리의 다른 글
Django 실습(6) Login 기능 구현하기 (0) | 2023.10.13 |
---|---|
Django 실습(5) Form과 ModelForm 사용한 블로그 (0) | 2023.10.12 |
Django 실습(4) Model과 DB를 이용한 게시물 관리와 업로드 (1) | 2023.10.11 |
Django 실습(3) Bootstrap 사용해서 블로그 만들고 꾸미기 (0) | 2023.10.10 |
Django 실습(2) Templates 분리와 상속으로 블로그 만들기 (1) | 2023.10.10 |