Advanced Usage

Utility Methods

These are available on your model instance when the mixin or extend the base model is used.

Method Details
has_changed(field_name: str) -> bool Return a boolean indicating whether the field's value has changed since the model was initialized
initial_value(field_name: str) -> bool Return the value of the field when the model was first initialized

Example

You can use these methods for more advanced checks, for example:

from django_lifecycle import LifecycleModel, AFTER_UPDATE, hook


class UserAccount(LifecycleModel):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    marital_status = models.CharField(max_length=100)

    @hook(AFTER_UPDATE)
    def on_name_change_heck_on_marietal_status(self):
        if self.has_changed('last_name') and not self.has_changed('marietal_status'):
            send_mail(to=self.email, "Has your marietal status changed recently?")

Suppressing Hooked Methods

To prevent the hooked methods from being called, pass skip_hooks=True when calling save:

   account.save(skip_hooks=True)