Pydantic models help you check and organize data easily. They make sure your data is correct before using it.
When you want to check user input in a web app.
When you need to convert data from JSON to Python objects.
When you want to make sure data has the right types like numbers or text.
When you want to keep your code clean and easy to understand.
When you want automatic error messages if data is wrong.
Syntax
FastAPI
from pydantic import BaseModel
class ModelName(BaseModel):
field_name: field_type
another_field: another_type
Models inherit from BaseModel.
Each field has a name and a type, like str or int.
Examples
This model checks that name is text and age is a number.
FastAPI
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
This model has a product with an ID number, a price with decimals, and a true/false stock status.
FastAPI
from pydantic import BaseModel
class Product(BaseModel):
id: int
price: float
in_stock: bool
Sample Program
This example shows how to create a Person model. It prints the valid person data. Then it tries to create a person with wrong age type and prints the error.
FastAPI
from pydantic import BaseModel, ValidationError
class Person(BaseModel):
name: str
age: int# Correct data
person1 = Person(name="Alice", age=30)
print(person1)
# Incorrect data exampletry:
person2 = Person(name="Bob", age="thirty")
except ValidationError as e:
print(e)
OutputSuccess
Important Notes
Pydantic automatically converts data types when possible, like strings to numbers.
If data is wrong, Pydantic shows clear error messages to help fix it.
You can add default values by writing field_name: type = default_value.
Summary
Pydantic models check and organize data with simple classes.
They help catch errors early by validating data types.
Use them to keep your app data clean and easy to work with.
Practice
(1/5)
1. What is the main purpose of a Pydantic model in FastAPI?
easy
A. To validate and organize data automatically
B. To create HTML templates
C. To manage database connections
D. To handle user authentication
Solution
Step 1: Understand Pydantic model role
Pydantic models are designed to check and organize data by validating types and structure. This matches "To validate and organize data automatically".
Final Answer:
To validate and organize data automatically -> Option A
Quick Check:
Pydantic = Data validation and organization [OK]
Hint: Pydantic models are for data validation, not UI or DB [OK]
Common Mistakes:
Confusing Pydantic with template engines
Thinking Pydantic manages databases
Assuming Pydantic handles authentication
2. Which of the following is the correct way to define a simple Pydantic model with a required string field name?
easy
A. class User:
name = str
B. def User():
name: str
C. class User(BaseModel):
name: str
D. class User(BaseModel):
name = 'str'
Solution
Step 1: Recall Pydantic model syntax
A Pydantic model must inherit from BaseModel and define fields with type annotations like class User(BaseModel):
name: str. Other options miss inheritance or use assignment instead of type annotation.
Final Answer:
class User(BaseModel):\n name: str -> Option C
Quick Check:
BaseModel + type annotation = correct model [OK]
Hint: Use BaseModel and type annotations for fields [OK]
Common Mistakes:
Not inheriting from BaseModel
Using assignment instead of type annotation
Defining model as a function
3. Given this Pydantic model and code:
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
item = Item(id='10', name='Book')
print(item.id, type(item.id))
What will be the output?
medium
A. 10
B. '10'
C. Error: id must be int
D. 10
Solution
Step 1: Understand Pydantic type coercion
Pydantic automatically converts compatible types like string '10' to int 10, so print(item.id, type(item.id)) outputs 10 <class 'int'>.
Hint: Pydantic converts strings to int if possible [OK]
Common Mistakes:
Expecting a type error for string input
Assuming no conversion happens
Confusing output type with input type
4. What is wrong with this Pydantic model definition?
from pydantic import BaseModel
class Product(BaseModel):
price: float = 'free'
medium
A. Class name should be lowercase
B. Default value 'free' is a string, but price expects a float
C. Missing import for BaseModel
D. Field price must be an integer
Solution
Step 1: Check field type and default value
price: float = 'free' is invalid because the string 'free' cannot be converted to float, causing a validation error.
Final Answer:
Default value 'free' is a string, but price expects a float -> Option B
Quick Check:
Field type and default must match [OK]
Hint: Default values must match field types exactly [OK]
Common Mistakes:
Using wrong default value types
Ignoring type mismatch errors
Thinking class names must be lowercase
5. You want to create a Pydantic model User with an optional age field that defaults to 18 if not provided. Which is the correct way?
hard
A. class User(BaseModel):
age: int = 18
B. class User(BaseModel):
age: Optional[int]
C. class User(BaseModel):
age: int = None
D. class User(BaseModel):
age: int
Solution
Step 1: Understand optional field with default
To make age optional with default 18, use age: int = 18. age: Optional[int] lacks default (required but allows None), age: int = None is invalid (None not int), age: int requires a value.
Final Answer:
class User(BaseModel):\n age: int = 18 -> Option A
Quick Check:
Default value makes field optional [OK]
Hint: Assign default value to make field optional [OK]
Common Mistakes:
Using Optional without default
Assigning None to non-optional int
Forgetting to assign default value
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.