Atualizar e excluir
Parte da seção Models e o Admin do Journey de Django da Coddy. Lição 12 de 23.
Os preços mudam e os livros saem da prateleira. Para alterar um livro, defina seu atributo e chame save(); sem save(), a tabela mantém o valor antigo. Para alterar várias linhas de uma vez, chame update() em um QuerySet. Ele executa um UPDATE e retorna quantas linhas foram alteradas. delete() funciona da mesma forma e retorna quantas linhas foram excluídas, no total e por modelo:
Book.objects.filter(year__lt=1900).update(price="5.00") # 2
Book.objects.filter(price__gt=14).delete() # (1, {'books.Book': 1})Ambos atuam exatamente nas linhas do QuerySet, então filtre primeiro. Book.objects.update(is_read=True) marca todos os livros, e nenhum dos métodos pede confirmação antes de agir.
Desafio
FácilEm explore.py, acima do último print:
Duneestá em promoção: defina seu preço como7.99.- Marque todos os livros de
Jane Austencomo lidos, em uma consulta. - Exclua todos os livros de mistério, em uma consulta.
Pressione Run. O Console mostra 7 books on the shelf, e a aba Data mostra Dune por 7.99 e nenhum livro de mistério.
Experimente você mesmo
from books.models import Book
# 1. Dune está em promoção: defina seu preço como 7.99.
# 2. Marque todos os livros de Jane Austen como lidos.
# 3. Doe todos os livros de mistério.
print(Book.objects.count(), "books on the shelf")
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Models e o Admin
2Consultas com o ORM
Criando registrosAll e GetFiltros e consultasContando registrosOrdenando registrosAtualizar e excluirPratique por conta própria: Playground de Django