Apply conditions to lifecycle hooks
masterTo prevent a hook from firing on every lifecycle event, use the condition parameter in the @hook decorator. You can use built-in condition classes or provide your own. Conditions can be combined using boolean operators & (AND) and | (OR).
Built-in Conditions:
WhenFieldHasChanged(field_name, has_changed)WhenFieldValueIs(field_name, value)WhenFieldValueIsNot(field_name, value)WhenFieldValueWas(field_name, value)WhenFieldValueWasNot(field_name, value)WhenFieldValueChangesTo(field_name, value)
from django_lifecycle.conditions import WhenFieldValueChangesTo
from django_lifecycle import hook, BEFORE_UPDATE
@hook(
BEFORE_UPDATE,
condition=(
WhenFieldValueChangesTo("first_name", value="Ned")
& WhenFieldValueChangesTo("last_name", value="Flanders")
)
)
def do_something(self):
...