Django sta inviando i segnali pre/post_delete se si utilizza il metodo queryset.delete()
, ma non dovrebbe anche inviare pre/post_save su queryset.update()
?Django: segnale su queryset.update
risposta
Forse è necessario, ma non è così. .update() non chiama il metodo .save() sui singoli oggetti in QuerySet e aggiorna il tutto in un'unica chiamata SQL (UPDATE, come accade). Dal momento che non usa .save(), sarebbe incoerente richiamare i segnali pre- e post-salvataggio. Posso certamente immaginare casi d'uso in cui si potrebbe desiderare di farlo, ma posso anche immaginare casi in cui uno non lo farebbe. Mi sembra che non chiamare i segnali pre- e post-save sia il comportamento corretto in quanto lascia una maggiore flessibilità al programmatore. Non è difficile attivare questi segnali manualmente, e penso che sia sicuramente una decisione progettuale migliore chiedere ai programmatori di ricordare di attivare i segnali per ottenere il comportamento desiderato piuttosto che chiedere loro di ricordare di disconnettere i segnali per evitare comportamenti indesiderati.
- 1. Utilizzo del segnale Pre_delete in django
- 2. django: ricorsione con segnale post-salvataggio
- 3. django segnale post_save manda formsets linea obsoleti
- 4. Segnale Django dopo che l'intero modello è stato salvato
- 5. Segnale Django che emette una volta, ricevuto due volte - Perché?
- 6. Django: i ricevitori del segnale possono restituire i dati?
- 7. Verificare di essere connesso a un particolare segnale in Django
- 8. Segnale appropriato per uccidere il server di sviluppo django
- 9. Django - Come salvare i dati m2m tramite segnale post_save?
- 10. Perché il segnale post_save di Django mi dà dati pre_save?
- 11. Identifica i campi modificati nel segnale post_save django
- 12. Disabilitare il segnale acustico su git diff su Windows
- 13. Segnale di ridimensionamento QWidget?
- 14. Gestore segnale SIGKILL
- 15. Un segnale m2m_changed e bug con post_remove
- 16. nodifica del segnale Bluetooth
- 17. Sviluppo basato su test per librerie di elaborazione del segnale
- 18. Come misurare la potenza del segnale GPS su Android?
- 19. Segnale 11, errore di segmentazione su iphone App exit
- 20. Qt forza QCheckBox per emettere il segnale su setChecked
- 21. Nginx + php-fpm su Amazon Linux = uscito il segnale 11
- 22. Jython: fare un semplice segnale acustico su Windows
- 23. Come disattivare il segnale acustico in emacs su Windows
- 24. Distribuire Django su alwaysdata.com
- 25. Python + Django su Android
- 26. Distribuire django su CPanel
- 27. strano UnicodeDecodeError su django
- 28. django su Google Appengine
- 29. Il segnale Django - post_init viene richiamato su Salva istanza modello e prima ancora viene creata l'istanza. Perché?
- 30. Segnale pre_save Django: controlla se l'istanza non viene aggiornata, kwargs ['created'] (still) esiste?
Benché le ragioni menzionate ritengo che questo comportamento sia in qualche modo incoerente, perché il metodo queryset.delete() non chiama anche delete() sulle singole istanze, ma invia gli stessi segnali di model.delete()! –
Inoltre, per poter inviare segnali di salvataggio su un queryset, in sostanza dovrebbero eseguire una selezione per gli elementi oltre all'aggiornamento, eliminando i vantaggi derivanti dall'avere un metodo di aggiornamento di massa. –