Sinyal post_save dan pre_delete
Jalankan kode saat model berubah
Sinyal post_save dan pre_delete adalah pelajaran Django Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Django Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Django Academy mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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. ✅
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Sinyal post_save dan pre_delete” gratis?
Ya — teks lengkap “Sinyal post_save dan pre_delete” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Django Academy, upgrade ke CoddyKit PRO. Kursus Django Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Sinyal post_save dan pre_delete”?
Jalankan kode saat model berubah Kamu berlatih Django Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Django Academy?
Tidak diperlukan pengalaman sebelumnya. Django Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Sinyal post_save dan pre_delete” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Django Academy ini?
Ya. Setiap pelajaran Django Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Sinyal post_save dan pre_delete
- Menghubungkan Penerima dengan Benar
- Menulis Middleware Kustom
- Urutan Middleware dan process_view