Bird
0
0

Given this code snippet, what will be printed when a Book instance is deleted?

medium📝 component behavior Q13 of 15
Django - Signals
Given this code snippet, what will be printed when a Book instance is deleted?
from django.db.models.signals import pre_delete, post_delete
from django.dispatch import receiver

@receiver(pre_delete, sender=Book)
def before_delete(sender, instance, **kwargs):
    print(f"Deleting book: {instance.title} (pre_delete)")

@receiver(post_delete, sender=Book)
def after_delete(sender, instance, **kwargs):
    print(f"Deleted book: {instance.title} (post_delete)")

book = Book(title='Django Basics')
book.delete()
ADeleting book: Django Basics (pre_delete) Deleted book: Django Basics (post_delete)
BDeleted book: Django Basics (post_delete) Deleting book: Django Basics (pre_delete)
COnly Deleting book: Django Basics (pre_delete) is printed
DNo output is printed
Step-by-Step Solution
Solution:
  1. Step 1: Understand signal order on deletion

    pre_delete runs before the instance is deleted, so its print runs first.
  2. Step 2: Understand post_delete runs after deletion

    After deletion, post_delete signal triggers, printing the second message.
  3. Final Answer:

    Deleting book: Django Basics (pre_delete) Deleted book: Django Basics (post_delete) -> Option A
  4. Quick Check:

    Signal print order = Deleting book: Django Basics (pre_delete) Deleted book: Django Basics (post_delete) [OK]
Quick Trick: pre_delete prints before delete, post_delete prints after [OK]
Common Mistakes:
MISTAKES
  • Assuming post_delete prints before pre_delete
  • Expecting only one signal to run
  • Forgetting to call delete() on the instance

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More Django Quizzes