Signals (señales) son la implementación de Django del patrón observer — permiten que ciertos remitentes notifiquen a un conjunto de receptores cuando ocurren eventos específicos (como que un modelo se guarde o se elimine). Permiten código desacoplado: una parte de la app reacciona a eventos en otra sin acoplamiento directo.
Señales integradas comunes
pre_save / post_save → before / after a model instance is saved
pre_delete / post_delete → before / after a model instance is deleted
m2m_changed → a ManyToMany relationship changed
request_started / finished→ request lifecycle
user_logged_in / out → authentication events
