Django Academy · Aula

Sinais post_save e pre_delete

Execute código quando os modelos forem alterados

Aula 1 de 413 etapas

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. ✅

Grátis para começar

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

  1. Sinais post_save e pre_delete
  2. Conectando receptores corretamente
  3. Escrevendo middleware personalizado
  4. Ordem do middleware e process_view
← Voltar para Django Academy