Bird
Raised Fist0
Djangoframework~10 mins

Why ORM maps Python to database in Django - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a Django model representing a simple Book with a title.

Django
from django.db import models

class Book(models.Model):
    title = models.[1](max_length=100)
Drag options to blanks, or click blank then click option'
ADateField
BIntegerField
CCharField
DBooleanField
Attempts:
3 left
💡 Hint
Common Mistakes
Using IntegerField for text data
Forgetting to specify max_length for CharField
2fill in blank
medium

Complete the code to query all Book objects from the database using Django ORM.

Django
books = Book.[1].all()
Drag options to blanks, or click blank then click option'
Aobjects
Bqueryset
Cfilter
Dget
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'filter' without arguments
Using 'get' which returns a single object
3fill in blank
hard

Fix the error in the code to save a new Book instance to the database.

Django
book = Book(title='Django Basics')
book.[1]()
Drag options to blanks, or click blank then click option'
Ainsert
Bcreate
Cadd
Dsave
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'create' on an instance instead of the manager
Using 'add' which is for many-to-many relations
4fill in blank
hard

Fill both blanks to filter Books with titles containing 'Django' and order them by title.

Django
books = Book.objects.[1](title__icontains='Django').[2]('title')
Drag options to blanks, or click blank then click option'
Afilter
Border_by
Cexclude
Dall
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'exclude' instead of 'filter'
Using 'all' which returns all records without filtering
5fill in blank
hard

Fill all three blanks to create a dictionary mapping book titles to their IDs for books published after 2020.

Django
books_dict = {book.[1]: book.[2] for book in Book.objects.[3](published_year__gt=2020)}
Drag options to blanks, or click blank then click option'
Atitle
Bid
Cfilter
Dall
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'all' instead of 'filter' to limit books
Swapping title and id in the dictionary keys and values

Practice

(1/5)
1. Why does Django use an ORM to map Python classes to database tables?
easy
A. To prevent any changes to the database structure
B. To make the database run faster by skipping Python
C. To force developers to write raw SQL queries
D. To let developers work with databases using Python code instead of SQL

Solution

  1. Step 1: Understand ORM purpose

    ORM stands for Object-Relational Mapping, which connects Python objects to database tables.
  2. Step 2: Identify why mapping is useful

    This allows developers to use Python code to create, read, update, and delete data without writing SQL.
  3. Final Answer:

    To let developers work with databases using Python code instead of SQL -> Option D
  4. Quick Check:

    ORM = Python code for database [OK]
Hint: ORM means use Python classes, not SQL, for database [OK]
Common Mistakes:
  • Thinking ORM makes database faster by skipping Python
  • Believing ORM forces raw SQL writing
  • Assuming ORM blocks database changes
2. Which of the following is the correct way to define a Django model field that maps to a database column?
easy
A. name = models.FieldChar(100)
B. name = CharField(max_length=100)
C. name = models.CharField(max_length=100)
D. name = models.Char(100)

Solution

  1. Step 1: Recall Django model field syntax

    Django model fields are defined using models.FieldType() with parameters.
  2. Step 2: Match correct field type and parameters

    CharField is the correct field for text with a max length, and it requires max_length.
  3. Final Answer:

    name = models.CharField(max_length=100) -> Option C
  4. Quick Check:

    Correct field syntax = name = models.CharField(max_length=100) [OK]
Hint: Use models.FieldType() with parameters for fields [OK]
Common Mistakes:
  • Omitting 'models.' prefix
  • Using wrong field class names
  • Passing parameters incorrectly
3. Given this Django model and code:
class Book(models.Model):
    title = models.CharField(max_length=50)

book = Book(title='Django Guide')
book.save()
print(Book.objects.count())

What will be printed?
medium
A. 0
B. 1
C. Error because save() is missing arguments
D. The title 'Django Guide'

Solution

  1. Step 1: Understand model instance creation and saving

    Creating book with title and calling save() stores it in the database.
  2. Step 2: Check what Book.objects.count() does

    This counts how many Book records exist in the database, which is 1 after saving.
  3. Final Answer:

    1 -> Option B
  4. Quick Check:

    Saved one book, count = 1 [OK]
Hint: save() adds record, count() shows total saved [OK]
Common Mistakes:
  • Thinking save() needs arguments
  • Confusing count() with printing title
  • Assuming count() returns 0 before save
4. What is wrong with this Django model code?
class Author(models.Model):
    name = models.CharField(max_length=50)

author = Author(name='Alice')
author.save(name='Bob')
medium
A. save() method does not accept arguments like name
B. CharField requires max_length to be 100 or more
C. Model class must be named with lowercase
D. You cannot create model instances with parameters

Solution

  1. Step 1: Check save() method usage

    The save() method does not take field values as arguments; it saves current instance data.
  2. Step 2: Identify correct way to update fields

    To change a field, assign it before calling save(), e.g., author.name = 'Bob'.
  3. Final Answer:

    save() method does not accept arguments like name -> Option A
  4. Quick Check:

    save() takes no args, just saves instance [OK]
Hint: save() saves instance, does not take field args [OK]
Common Mistakes:
  • Passing fields to save() method
  • Thinking max_length must be >=100
  • Naming model classes lowercase
5. You want to update all books with title 'Old Title' to 'New Title' using Django ORM. Which code correctly does this efficiently?
hard
A.
Book.objects.filter(title='Old Title').update(title='New Title')
B.
for book in Book.objects.all():
    if book.title == 'Old Title':
        book.title = 'New Title'
        book.save()
C.
Book.update(title='New Title').filter(title='Old Title')
D.
Book.objects.get(title='Old Title').title = 'New Title'

Solution

  1. Step 1: Understand bulk update with filter

    filter(...).update(...) updates all matching records in one database query efficiently.
  2. Step 2: Compare other options

    for book in Book.objects.all():
        if book.title == 'Old Title':
            book.title = 'New Title'
            book.save()
    updates one by one, less efficient; A has wrong method order; D updates one object but does not save.
  3. Final Answer:

    Book.objects.filter(title='Old Title').update(title='New Title') -> Option A
  4. Quick Check:

    Bulk update with filter().update() is best [OK]
Hint: Use filter().update() for fast bulk changes [OK]
Common Mistakes:
  • Updating objects one by one instead of bulk
  • Calling update() before filter()
  • Forgetting to save after changing fields
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard