Не срабатывание сигнала 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)
, что занимает много времени, а также бесполезно, потому что автор удаляется. Есть ли способ обойти не запускать вычисления, когда удаляемый экземпляр является автором?