I segnali di salvataggio / eliminazione sono generalmente favorevoli in situazioni in cui è necessario apportare modifiche che non sono completamente specifiche per il modello in questione, o potrebbero essere applicate a modelli che hanno qualcosa in comune o potrebbero essere configurate per l'uso tra modelli.
Un'attività comune nei save
metodi sostituiti è la generazione automatica di slug da un campo di testo in un modello. Questo è un esempio di qualcosa che, se fosse necessario implementarlo per un numero di modelli, trarrebbe vantaggio dall'uso di un pre_save
segnale, in cui il gestore del segnale potrebbe prendere il nome del campo slug e il nome del campo da cui generare lo slug. Una volta che hai installato qualcosa del genere, qualsiasi funzionalità avanzata che metti in atto verrà applicata anche a tutti i modelli, ad esempio cercando lo slug che stai per aggiungere per il tipo di modello in questione, per garantire l'unicità.
Le applicazioni riutilizzabili spesso traggono vantaggio dall'uso di segnali: se la funzionalità che forniscono può essere applicata a qualsiasi modello, in genere (a meno che non sia inevitabile) non vorranno che gli utenti debbano modificare direttamente i loro modelli per trarne vantaggio.
Con django-mptt , ad esempio, ho utilizzato il pre_save
segnale per gestire un insieme di campi che descrivono una struttura ad albero per il modello che sta per essere creato o aggiornato e il pre_delete
segnale per rimuovere i dettagli della struttura ad albero per l'oggetto da eliminare e il suo intero sottoalbero di oggetti prima di esso e vengono eliminati. Grazie all'uso di segnali, gli utenti non devono aggiungere o modificare save
o delete
metodi sui loro modelli di avere questa gestione fatto per loro, devono solo lasciare che django-MPTT sapere quali modelli lo vogliono gestire.