Signals — Aquilia Documentation
Comprehensive guide and documentation for Signals in the Aquilia framework. View API reference, examples, and implementation patterns.
Docs / Models / Signals Model Signals Hook into the model lifecycle at every stage using pre-save, post-save, pre-delete, post-delete, pre-init, post-init, and class_prepared signals. Model Lifecycle Signals Aquilia's signals system allows decoupled applications to get notified when actions occur elsewhere. Hook into the model lifecycle at every stage: from aquilia.models.signals import ( pre_save, post_save, pre_delete, post_delete, pre_init, post_init, class_prepared, m2m_changed, receiver, ) @receiver(pre_save, sender=User) async def hash_password(sender, instance, **kwargs): if instance._state.get("password_changed"): instance.password = hash_fn(instance.password) @receiver(post_save, sender=User) async def send_notification(sender, instance, created, **kwargs): if created: await send_welcome_email(instance.email) @receiver(pre_delete, sender=User) async def check_can_delete(sender, instance, **kwargs): if instance.is_superuser: raise PermissionError("Cannot delete superuser") @receiver(class_prepared) async def on_model_registered(sender, **kwargs): print(f"Model registered: ") # Signal.connect() / Signal.disconnect() for manual management from aquilia.models.signals import Signal custom_signal = Signal() custom_signal.connect(my_handler, sender=MyModel) await custom_signal.send(sender=MyModel, instance=obj) custom_signal.disconnect(my_handler, sender=MyModel) Migrations Transactions );
Go to Homepage