Django отправляет сигналы pre/post_delete, если вы используете метод queryset.delete()
, но не следует ли ему также отправлять pre/post_save на queryset.update()
?Django: Signal on queryset.update
ответ
Возможно, это необходимо, но это не так. .update() не вызывает метод .save() для отдельных объектов в QuerySet и вместо этого обновляет все в одном вызове SQL (как это происходит). Поскольку он не использует .save(), было бы непоследовательно, если бы он вызывал сигналы до и после сохранения. Я могу, конечно, представить варианты использования, в которых это может потребоваться, но я также могу представить себе случаи, когда этого не будет. Мне кажется, что неправильное использование сигналов до и после сохранения - это правильное поведение здесь, поскольку оно оставляет большую гибкость для программиста. Нетрудно вызвать эти сигналы вручную, и я думаю, что это определенно лучшее дизайнерское решение, чтобы попросить программистов помнить о том, чтобы заставить сигналы получать желаемое поведение, чем просить их не забывать отключать сигналы, чтобы избежать нежелательного поведения.
- 1. django signal on user create
- 2. Wake Thread On Signal
- 3. Django request_finished signal
- 4. Django pre-save signal
- 5. django signal post_syncdb
- 6. Signal clic on QSpinBox Qt
- 7. Increating в datime поле с queryset.update
- 8. emit qml signal on start application
- 9. VHDL - WAIT ON <signal> statement
- 10. vim OSX deadly signal ABRT on vsplit
- 11. Django Assign-perm w/Post-Save Signal
- 12. python emit signal on on clicked QTreeview item checkbox изменен
- 13. debug-on-error vs. debug-on-signal (в частности, json.el)
- 14. Django Signal via Decorator по методу модели?
- 15. django-registration + ajax, user_registered signal random failed
- 16. Django post_save signal действует как pre_save
- 17. Касад Django delete и post_delete signal
- 18. Django Paypal IPN Signal for Периодическая оплата
- 19. Django signal get request полный путь
- 20. Django post_save signal + ManyToManyField: больше вопросов
- 21. Django log user IP для user_login_failed signal
- 22. Django signal mystery ... сервер разработки и удаленный сервер
- 23. Catch Abort signal on hudson в сценарии оболочки?
- 24. Сообщение об ошибке «Thread1: signal SIGABRT» on «return 0»
- 25. Single-Signal on AngularJS для входа в систему
- 26. Модуль расширения ключа AES на Xilinx: ошибка: multisouce on signal
- 27. Signal Stack
- 28. django on production server (ubuntu)
- 29. VHDL Signal Assignment Confusion
- 30. Обновление объекта срабатывает post_save signal
Ну, хотя упомянутые причины я считаю, что это как-то непоследовательное поведение, потому что метод queryset.delete() также не вызывает delete() в отдельных экземплярах, но посылает те же сигналы, что и model.delete()! –
Кроме того, чтобы иметь возможность отправлять сигналы, связанные с сохранением, в наборе запросов, им необходимо было бы сделать выбор для элементов в дополнение к обновлению, исключая преимущества наличия метода массового обновления. –