Sinais post_save e pre_delete
Execute código quando os modelos forem alterados
Sinais post_save e pre_delete é uma aula grátis de Django Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Django Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Django Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Signals in a Sentence
A signal lets one part of Django announce that something happened, so other code can react without being directly called.
Why React to Events
Sometimes you want side effects when a model changes, like sending a welcome email after signup. Signals keep that reaction out of your save logic.
The post_save Signal
The post_save signal fires right after a model instance is written to the database, so you know the row already exists.
A post_save Receiver
You write a function and tell Django to call it when post_save fires. The receiver gets the saved instance through its arguments.
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=Profile)
def on_save(sender, instance, **kwargs):
print("saved", instance)The created Flag
post_save passes a created boolean: True on a brand-new row, False on an update. Use it to run code only on first creation.
def on_save(sender, instance, created, **kwargs):
if created:
print("new", instance)The pre_delete Signal
The pre_delete signal fires just before a row is removed, so the instance still exists when your code runs.
A pre_delete Receiver
Use pre_delete to clean up related resources, like a file, before the database row vanishes. The instance is still fully available.
from django.db.models.signals import pre_delete
@receiver(pre_delete, sender=Photo)
def clean_up(sender, instance, **kwargs):
instance.image.delete(save=False)pre_save and post_delete Too
Django also ships pre_save and post_delete. Together they cover the moments just before and after each write or delete.
The sender Argument
The sender tells you which model class triggered the signal. Pass sender= to a receiver so it only listens to one model.
Always Accept kwargs
Every receiver should accept **kwargs. Django may pass extra arguments, and missing them raises an error when the signal fires.
Decouple, Don't Bury Logic
Signals shine for cross-cutting reactions, but heavy logic can become hard to trace. Reach for a signal when the reaction is truly separate.
Quick Check
Test how post_save tells new rows apart from updates.
Recap: Reacting to Model Events
You met Django signals: post_save fires after writes with a created flag, pre_delete fires before removals, and every receiver should accept **kwargs. ✅
Aprenda Python com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Sinais post_save e pre_delete” é grátis?
Sim — o texto completo de “Sinais post_save e pre_delete” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Django Academy, atualize para CoddyKit PRO. O curso de Django Academy inclui 4 aulas no total.
O que vou aprender em “Sinais post_save e pre_delete”?
Execute código quando os modelos forem alterados Você pratica Django Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Django Academy?
Nenhuma experiência prévia é necessária. Django Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Sinais post_save e pre_delete”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Django Academy?
Sim. Cada aula de Django Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Sinais post_save e pre_delete
- Conectando receptores corretamente
- Escrevendo middleware personalizado
- Ordem do middleware e process_view