Sinyal simpan / hapus umumnya menguntungkan dalam situasi di mana Anda perlu membuat perubahan yang tidak sepenuhnya spesifik untuk model yang dimaksud, atau dapat diterapkan pada model yang memiliki kesamaan, atau dapat dikonfigurasi untuk digunakan di berbagai model.
Satu tugas umum dalam save
metode yang diganti adalah pembuatan siput otomatis dari beberapa bidang teks dalam model. Itu adalah contoh dari sesuatu yang, jika Anda perlu mengimplementasikannya untuk sejumlah model, akan mendapat manfaat dari penggunaan pre_save
sinyal, di mana penangan sinyal dapat mengambil nama bidang siput dan nama bidang untuk menghasilkan siput. Setelah Anda memiliki sesuatu seperti itu, semua fungsionalitas yang ditingkatkan yang Anda tempatkan juga akan berlaku untuk semua model - misalnya mencari siput yang akan Anda tambahkan untuk jenis model yang dimaksud, untuk memastikan keunikan.
Aplikasi yang dapat digunakan kembali sering kali mendapat manfaat dari penggunaan sinyal - jika fungsionalitas yang mereka sediakan dapat diterapkan ke model apa pun, mereka umumnya (kecuali jika tidak dapat dihindari) tidak ingin pengguna harus langsung memodifikasi model mereka untuk mendapatkan manfaat darinya.
Dengan django-mptt , misalnya, saya menggunakan pre_save
sinyal untuk mengelola sekumpulan bidang yang menjelaskan struktur pohon untuk model yang akan dibuat atau diperbarui dan pre_delete
sinyal untuk menghapus detail struktur pohon untuk objek yang dihapus dan keseluruhannya. sub-pohon objek sebelumnya dan mereka akan dihapus. Karena penggunaan sinyal, pengguna tidak perlu menambah atau memodifikasi save
atau delete
metode pada model mereka untuk melakukan manajemen ini untuk mereka, mereka hanya perlu membiarkan django-mptt mengetahui model mana yang mereka inginkan untuk dikelola.