Bird
Raised Fist0
FastAPIframework~10 mins

Nested models in FastAPI - Interactive Code Practice

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

Complete the code to import the BaseModel class from Pydantic.

FastAPI
from pydantic import [1]
Drag options to blanks, or click blank then click option'
AModel
BField
CSchema
DBaseModel
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Model' instead of 'BaseModel'.
Trying to import 'Schema' which is not a Pydantic class.
2fill in blank
medium

Complete the code to define a nested Pydantic model inside another model.

FastAPI
class Address(BaseModel):
    city: str

class User(BaseModel):
    name: str
    address: [1]
Drag options to blanks, or click blank then click option'
Astr
BAddress
Cint
Ddict
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'str' or 'dict' instead of the nested model class.
Using 'int' which is not appropriate here.
3fill in blank
hard

Fix the error in the nested model definition by completing the missing import.

FastAPI
from pydantic import BaseModel
from typing import [1]

class Item(BaseModel):
    name: str

class Order(BaseModel):
    items: [1][Item]
Drag options to blanks, or click blank then click option'
AList
BDict
CSet
DTuple
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Dict' which requires two type parameters.
Using 'Set' or 'Tuple' which are not lists.
4fill in blank
hard

Fill both blanks to define a nested model with an optional field.

FastAPI
from typing import [1]

class Profile(BaseModel):
    bio: [2] = None
Drag options to blanks, or click blank then click option'
AOptional
Bstr
Cint
DList
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'int' for bio which should be text.
Not using 'Optional' for a field that can be None.
5fill in blank
hard

Fill all three blanks to create a nested model with a list of nested items and a required field.

FastAPI
from typing import [1]

class Product(BaseModel):
    id: int
    name: str

class Cart(BaseModel):
    products: [2][[3]]
Drag options to blanks, or click blank then click option'
AList
BDict
CProduct
DSet
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Dict' or 'Set' instead of 'List'.
Using a wrong class name instead of 'Product'.

Practice

(1/5)
1. What is the main purpose of using nested models in FastAPI?
easy
A. To represent complex data structures by embedding one model inside another
B. To speed up the API response time
C. To automatically generate HTML pages
D. To replace database models with simpler ones

Solution

  1. Step 1: Understand nested models concept

    Nested models allow you to include one Pydantic model inside another to represent complex or hierarchical data.
  2. Step 2: Identify the main purpose in FastAPI

    FastAPI uses nested models to validate and structure complex JSON data clearly and maintainably.
  3. Final Answer:

    To represent complex data structures by embedding one model inside another -> Option A
  4. Quick Check:

    Nested models = complex data representation [OK]
Hint: Nested models = models inside models for complex data [OK]
Common Mistakes:
  • Thinking nested models improve speed
  • Confusing nested models with HTML generation
  • Assuming nested models replace databases
2. Which of the following is the correct way to define a nested model in FastAPI using Pydantic?
easy
A. class User(BaseModel): name: str; address: str
B. class Address(BaseModel): street: str; class User(BaseModel): name: str; address: Address
C. class User(BaseModel): name: str; address = Address()
D. class Address: street: str; class User: name: str; address: Address

Solution

  1. Step 1: Check Pydantic model syntax

    Models must inherit from BaseModel and use type annotations for fields.
  2. Step 2: Verify nested model usage

    Nested models are declared by using the nested model class as a type annotation for a field.
  3. Final Answer:

    class Address(BaseModel): street: str; class User(BaseModel): name: str; address: Address -> Option B
  4. Quick Check:

    Nested model as type annotation = correct syntax [OK]
Hint: Use nested model class as field type with BaseModel inheritance [OK]
Common Mistakes:
  • Not inheriting from BaseModel
  • Assigning nested model instance instead of type
  • Using plain classes without BaseModel
3. Given the following FastAPI models:
class Item(BaseModel): name: str; price: float
class Order(BaseModel): id: int; item: Item

What will be the output of Order(id=1, item={'name': 'Book', 'price': 12.5}).item.price?
medium
A. None
B. '12.5'
C. Error: item must be an Item instance
D. 12.5

Solution

  1. Step 1: Understand nested model instantiation

    FastAPI/Pydantic automatically converts nested dicts to model instances when creating the parent model.
  2. Step 2: Access nested attribute

    Accessing item.price returns the float value 12.5 from the nested Item model.
  3. Final Answer:

    12.5 -> Option D
  4. Quick Check:

    Nested dict converts to model, attribute accessed = 12.5 [OK]
Hint: Nested dicts auto-convert to models, access attributes normally [OK]
Common Mistakes:
  • Expecting string instead of float
  • Thinking nested dicts cause errors
  • Assuming nested model must be instance, not dict
4. Identify the error in this FastAPI nested model code:
class Profile(BaseModel): age: int
class User(BaseModel): username: str; profile = {"age": 30}
medium
A. Missing type annotation for profile field
B. Profile class must inherit from BaseSettings, not BaseModel
C. Default value for nested model must be a Profile instance, not a dict
D. username field should be Optional[str]

Solution

  1. Step 1: Check field type annotations

    All Pydantic model fields require type annotations (: Type) for proper validation, especially for nested models.
  2. Step 2: Identify the missing annotation

    The profile field lacks type annotation: it should be profile: Profile = {"age": 30} or profile: Profile = Profile(age=30) to enable nested model validation.
  3. Final Answer:

    Missing type annotation for profile field -> Option A
  4. Quick Check:

    Type annotation required for nested model fields [OK]
Hint: All model fields must have type annotations: field: Type [OK]
Common Mistakes:
  • Using dict instead of model instance as default
  • Ignoring type annotations
  • Confusing BaseModel with BaseSettings
5. You want to create a FastAPI model for a blog post with nested author info. The author has name and email. The post has title, content, and author. Which code correctly defines these nested models and validates that the author's email is a valid email address?
hard
A. class Author(BaseModel): name: str; email: str class Post(BaseModel): title: str; content: str; author: Author @validator('email') def check_email(cls, v): return v
B. class Author(BaseModel): name: str; email: str class Post(BaseModel): title: str; content: str; author: dict
C. class Author(BaseModel): name: str; email: EmailStr class Post(BaseModel): title: str; content: str; author: Author
D. class Author(BaseModel): name: str; email: EmailStr class Post(BaseModel): title: str; content: str; author: dict

Solution

  1. Step 1: Use EmailStr for email validation

    Pydantic provides EmailStr type to validate email addresses automatically.
  2. Step 2: Define nested models correctly

    Author model uses EmailStr, Post model nests Author as a field with correct type annotation.
  3. Final Answer:

    class Author(BaseModel): name: str; email: EmailStr class Post(BaseModel): title: str; content: str; author: Author -> Option C
  4. Quick Check:

    EmailStr + nested Author model = correct validation [OK]
Hint: Use EmailStr type and nested model as field type [OK]
Common Mistakes:
  • Using plain str for email without validation
  • Setting author field as dict instead of Author model
  • Trying to validate email with incorrect validator placement
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