31
How can I run code automatically when a model is saved or deleted?
Loading...
Q&A · Answered
How can I run code automatically when a model is saved or deleted?
Accepted answer
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.signalsSay what you tried, not only what worked — the next person needs the reasoning. Code goes in a fenced block.