Skip to content

Q&A · Answered

How to use Django signals

asked 9 months, 1 week ago 2087 views 1 answer
31

How can I run code automatically when a model is saved or deleted?

1 Answer

One accepted
15

Accepted answer

Not confirmed since it was written, 9 months, 1 week ago
from django.db.models.signals import post_save, pre_delete
from django.dispatch import receiver
from .models import User, Profile

# Using decorator
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(pre_delete, sender=User)
def cleanup_user(sender, instance, **kwargs):
    # Cleanup before deletion
    pass

# In apps.py, ensure signals are loaded
class MyAppConfig(AppConfig):
    def ready(self):
        import myapp.signals

Your answer

Say what you tried, not only what worked — the next person needs the reasoning. Code goes in a fenced block.

Shown beside your answer and never checked, so it cannot be a name someone already has here.

No account needed to answer. Sign in instead and it carries your name and earns reputation.