수정과 삭제
Coddy Django 여정의 모델과 관리자 섹션에 포함된 레슨. 23개 중 12번째.
가격은 바뀌고 책은 서가에서 사라집니다. 책 한 권을 변경하려면 해당 속성을 설정하고 save()를 호출하세요. save()를 호출하지 않으면 테이블에는 이전 값이 그대로 유지됩니다. 여러 행을 한 번에 변경하려면 QuerySet에서 update()를 호출하세요. 이 메서드는 UPDATE를 한 번 실행하고 변경된 행의 수를 반환합니다. delete()도 같은 방식으로 작동하며, 삭제된 행의 수를 전체와 모델별로 반환합니다.
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})두 메서드 모두 QuerySet에 포함된 행만 정확히 대상으로 하므로, 먼저 필터링하세요. Book.objects.update(is_read=True)는 모든 책에 표시를 설정하며, 어느 메서드도 실행 전에 확인을 요청하지 않습니다.
챌린지
쉬움explore.py에서 마지막 print 위에 다음을 작성하세요.
Dune의 가격을7.99로 설정하세요.- 한 번의 쿼리로
Jane Austen의 모든 책을 읽은 것으로 표시하세요. - 한 번의 쿼리로 모든 미스터리 책을 삭제하세요.
Run을 누르세요. Console에는 7 books on the shelf라고 표시되고, Data 탭에는 Dune의 가격이 7.99로 표시되며 미스터리 책은 없습니다.
직접 해보기
from books.models import Book
# 1. Dune이 할인 중입니다. 가격을 7.99로 설정하세요.
# 2. Jane Austen이 쓴 모든 책을 읽음으로 표시하세요.
# 3. 모든 미스터리 책을 나눠 주세요.
print(Book.objects.count(), "books on the shelf")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
모델과 관리자의 모든 레슨
직접 연습해 보세요: Django 플레이그라운드