CRUD를 구현하는 QuerySet API 사용하기
첫번째 방법
article = Article()
article.title
article.save()
인스턴스로 save 메서드 호출
article = Article()
article.title = 'first'
article.content = 'django!'
# save를 하지 않으면 아직 DB에 값이 저장되지 않은 상태
article
# 출력 : <Article: Article object (None)>
Article.objets.all()
# 출력 : <QuerySet []>
# save를 하고 나면 저장
article.save()
article
# 출력 : <Article: Article object (1)>
article.id
# 출력 : 1
article.pk
# 출력 : 1
Article.objects.all()
# 출력 : <QuerySet [Article: Article object (1)]
- (1) 은 Id를 의미
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6cef9509-7a2b-4f97-9355-7571f8387c73/Untitled.png)
- 인스턴스인 article을 활용하여 변수에 접근(저장된 데이터 확인)
두번째 방법
인스턴스 생성시 초기 값을 함께 작성하여 생성
article = Article(title='second', content='django!')
# save 호출하여 저장
article.save()
article
# 출력 : <Article: Article object (2)>
Article.objects.all()
# 출력 : [<Article: Article object (1)>, <Article: Article object (2)>]
세번째 방법
create()
메서드 활용Article.objects.create(title='third', content='django!')
CRUD에서 제일 중요한 것
QuerySet API method를 사용해 데이터를 다양하게 조회하기
두가지
all()
QuerySet return
전체 데이터 조회
순회가 가능한 데이터로 반복문 사용이 가능
articles = Article.objects.all()
for article in articles:
print(article)
# 출력
# Article object (1)
# Article object (2)
# Article object (3)
get()
⇒ 유니크한 값에 대해서만 적용가능 함 = PK
filter()
지정된 조회 매개 변수와 일치하는 객체를 포함하는 새 QuerySet을 반환
조회를 해서 없거나, 1개 있어도 반환함
→ 없어도, 하나 있어도 QuerySet으로 반환
Article.objects.filter(content='django')
# 출력 : content가 'django!'인 데이터만 QuerySet에 담아 출력
Article.objects.filter(title='ssafy')
# 출력 : title이 'ssafy'인 데이터만 QuerySet에 담아 출력
# 조회한 결과가 없으면 빈 QuerySet을 출력한다.
# 조회한 결과가 1개여도 QuerySet으로 반환한다.
Article.objects.filter(content__contains='dj')
save()
메서드 호출article = Article.objects.get(pk=1)
# 인스턴스 변수 변경
article.title = 'byebye'
# 저장
article.save()
# 정상적으로 변경된 것을 확인
article.title
# 출력 : 'byebye'
삭제하고자 하는 인스턴스 객체를 조회 후 반환 값을 저장
delete()
메서드 호출
→ 삭제된 값은 재사용하지 않는다.
article = Article.objects.get(pk=1)
# delete 메서드 호출
article.delete()
(1, {'articles.Article': 1})
# 1번 데이터는 이제 조회할 수 없음
Article.objects.get(pk=1)
# DoesNotExist: Article matching query does not exist.