Reputation: 1932
class Project(models.Model):
name = models.CharField(max_length=100)
project_results_m2m = models.ManyToManyField(Project_Results,blank=True)
def delete_all(self):
pass ### TO BE ADDED FROM ANSWERS
@receiver(post_delete,sender=Project)
def delete_project_signal(sender,instance,created=False,**kwargs):
if created is False:
instance.delete_all()
p = Project.objects.get(id=1)
p.delete()
delete()
triggered on Project object 1
then the signal would execute delete_all
function.Now I would like to delete all objects of Project_Results
related to project_results_m2m
for Project object 1
.
How do I achieve it in a safe manner while deleting, either with signals or without signals?
Upvotes: 0
Views: 669
Reputation: 51978
Probably you need to use pre_delete
signal:
from django.db.models.signals import pre_delete
@receiver(pre_delete, sender=Project, dispatch_uid='project_delete_all')
def delete_all_instances(sender, instance, using, **kwargs):
instance.project_results_m2m.all().delete()
Upvotes: 2