Stile - Quando serializzare un'istanza del modello Django: segnali rispetto al metodo di salvataggio del modello
Domanda
Ho intenzione di serializzare un modello Django su XML quando viene salvato o aggiornato. (L'XML verrà importato in un filmato flash). È meglio ascoltare un segnale post_save () o pre_save () e quindi eseguire la serializzazione o semplicemente gestirlo nel methon save () del modello
Soluzione
Se è la funzionalità principale per salvare il modello, lo vorrai come parte del metodo di salvataggio. Tuttavia, se hai già un modello funzionante e desideri estenderlo per altri scopi, i segnali sono la soluzione migliore in quanto consentono moduli correttamente disaccoppiati.
Un buon esempio potrebbe essere che si desidera aggiungere la registrazione degli eventi al proprio sito, quindi è sufficiente ascoltare i segnali che indicano un evento anziché modificare il codice del sito originale.
post_save () di solito è meglio perché significa che il modello è stato salvato con successo, l'uso di pre_save () non garantisce che il salvataggio avrà esito positivo, quindi non dovrebbe essere usato per nulla che dipenda dal completamento del salvataggio.
Altri suggerimenti
Pubblica salvataggio. In questo modo i nuovi dati (il motivo per eseguire la serializzazione) sono già nel database. Sarà un po 'più pulito di codice che prende semplicemente dal database e non deve preoccuparsi di aggiungere un valore extra.
L'altro modo che viene in mente è quello di mantenere il file XML in parallelo al database. Vale a dire, nel tuo save () aggiungi i dati al database e al file xml. Questo avrebbe un sovraccarico molto meno se hai a che fare con tavoli enormi.