Thanks Erik.

I forgot to say that the Group model has an "active" flag on it, so I'm 
seeing if I can use this.


On Thursday, 1 September 2016 14:55:05 UTC-4, Erik Cederstrand wrote:
>
>
> > Den 1. sep. 2016 kl. 20.14 skrev Stodge <[email protected] <javascript:>>: 
>
> > 
> > I have two models, Volume and Group. The Volume model has a foreign key 
> to Group. 
> > 
> > When a user deletes a Volume the post_delete signal handler sends an 
> HTTP DELETE request (/volume) to another server process. This works great. 
> However, when the user deletes a Group, the cascading delete also deletes 
> all volumes in that group. That means I get lots (I'm talking <100) of 
> post_delete signals for the Volume model and therefore lots of HTTP 
> requests. 
> > 
> > Is there anyway to avoid this? Ideally, I'd like to send the HTTP DELETE 
>  request (/volume) when a volume is deleted, but send a different HTTP 
> DELETE request (/group) when the group is deleted and avoid sending any 
> volume HTTP DELETE requests. 
>
> You could disconnect the post_delete signal for Volume temporarily, but 
> that's a hack. 
>
> You probably have to abandon signals on the Volume model. I would attach 
> the post_delete signals logic directly to the Volume.delete() method and 
> add an option to disable signaling: 
>
> class Volume(models.Model): 
>     [....] 
>     def my_signal_logic(self): 
>         do_whatever() 
>
>     def delete(self, *args, **kwargs): 
>        with_signal = kwargs.pop('signal', True) 
>        if with_signal: 
>            self.my_signal_logic() 
>        super().delete(*args, **kwargs) 
>             
>
> Then in the post_delete signal for Group, you delete the Volumes 
> explicitly, telling delete() not to signal: 
>
>     for v in instance.volumes.all(): 
>         v.delete(signal=False) 
>
>     requests.delete('/group/%s' % instance.pk) 
>
>
> Erik

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/3b4b9f32-9b39-412f-9060-d94de7f72f61%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to