Не срабатывание сигнала post_delete_signal, когда он поступает от удаления CASCADE

Здравствуйте, у меня есть две модели django, связанные внешним ключом, и это выглядит так

class Author(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=255, null=False, db_index=True)
    number_of_books=models.IntegerField()
    #other fields
     


class Book(models.Model):
    author = models.ForeignKey('Author', on_delete=models.CASCADE, related_name='books')
    name = models.CharField(max_length=255, null=False, db_index=True)
    #other fields

    

В модели Book есть сигнал post_delete_signal, который запускает некоторые вычисления для экземпляра te author

def book_post_delete(sender, instance, **kwargs):

    # Re save max exposure
    author = instance.author
    author.number_of_books = author.books.count()
    author.save()
    trigger_computation(author)

Моя проблема в том, что если я удаляю, например, автора, то его книги также удаляются из-за on_delete=models.CASCADE, затем вызывается функция book_post_delete и вызывается trigger_computation(author), что занимает много времени, а также бесполезно, потому что автор удаляется. Есть ли способ обойти не запускать вычисления, когда удаляемый экземпляр является автором?

Вернуться на верх