Challenge - 5 Problems
Model Relationships Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate2:00remaining
What is the output of accessing related objects in Django?
Given these Django models:
What will
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')What will
author.books.count() return after creating one author and two books linked to that author?Django
author = Author.objects.create(name='Alice') Book.objects.create(title='Book 1', author=author) Book.objects.create(title='Book 2', author=author) result = author.books.count()
Attempts:
2 left
💡 Hint
Think about how the related_name works for reverse lookups.
✗ Incorrect
The related_name='books' on the ForeignKey allows accessing all Book objects linked to an Author via author.books. Since two books are created for the author, author.books.count() returns 2.
📝 Syntax
intermediate2:00remaining
Which option correctly defines a ManyToMany relationship in Django?
You want to model a relationship where multiple students can enroll in multiple courses. Which model definition is correct?
Attempts:
2 left
💡 Hint
Many students can have many courses, so think about the field type that supports many-to-many.
✗ Incorrect
ManyToManyField is the correct field to represent many-to-many relationships in Django. ForeignKey is one-to-many, OneToOneField is one-to-one, and CharField is just text.
🔧 Debug
advanced2:00remaining
Why does accessing a related object raise DoesNotExist error?
Given these models:
And this code:
Sometimes this raises
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField()And this code:
profile = Profile.objects.get(user=request.user) print(profile.bio)
Sometimes this raises
Profile.DoesNotExist. Why?Attempts:
2 left
💡 Hint
Think about what happens if the related object is missing.
✗ Incorrect
The DoesNotExist error means the query found no Profile linked to the user. This happens if the user has no Profile record yet.
❓ state_output
advanced2:00remaining
What is the output of this code using select_related?
Given these models:
And this code:
What does
class Publisher(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=100)
publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)And this code:
book = Book.objects.select_related('publisher').get(id=1)
print(book.publisher.name)What does
select_related do here?Attempts:
2 left
💡 Hint
select_related is used to optimize queries by joining related tables.
✗ Incorrect
select_related performs a SQL join to get related objects in one query. This avoids extra queries when accessing related fields.
🧠 Conceptual
expert3:00remaining
How does Django handle cascading deletes in model relationships?
Consider these models:
If a Category is deleted, what happens to its related Items?
class Category(models.Model):
name = models.CharField(max_length=100)
class Item(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
name = models.CharField(max_length=100)If a Category is deleted, what happens to its related Items?
Attempts:
2 left
💡 Hint
Check the meaning of on_delete=models.CASCADE.
✗ Incorrect
on_delete=models.CASCADE means deleting the referenced object (Category) will delete all related objects (Items) automatically.