> Den 28/07/2015 kl. 14.36 skrev Stefan Schindler <st...@boxbox.org>:
> 
>> This makes no sense to me. You want to delete an Item or Order but 
>> then immediately create a new one?
> 
> My actual goal is this: Whenever an Item object itself is deleted, I
> want to create a LogEntry object attached to the item's order. If an
> order is deleted however, I don't want to do anything.
> 
> In code, I expected it to look something like this:
> 
>  @receiver(post_delete, sender=Item)
>  def on_item_post_delete(instance, **kwargs):
>    if instance.order is not None:
>      LogEntry(order=instance.order).save()
> 
> It's technically impossible (AFAIK) however to determine the case
> between "Item alone is deleted" and "Item is cascaded by Order
> deletion", at the moment.

Signals are nice, but sometimes they just make code more complicated. You could 
go for this (naive) approach:


class Order(models.Model):
    def delete(self, *args, **kwargs):
        # Detatch this order from its' items
        for item in self.items.all():
            item.order = None
            item.save()
            # Or is this what you really wanted?
            # item.delete()  
    super().delete(*args, **kwargs)


class Item(models.Model):
    def delete(self, *args, **kwargs):
    if self.order:
        LogEntry(order=instance.order).save()
    super().delete(*args, **kwargs)


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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/7983ADA9-024A-4DEC-94B1-EC2D7FEDD7DA%40cederstrand.dk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to