Sentry Answers>FastAPI>

Optional field missing value error in custom Pydantic model

Optional field missing value error in custom Pydantic model

David Y.

The Problem

I’ve built a custom Pydantic schema for my FastAPI project with a couple of optional fields of custom types:

Click to Copy
class PetOwner: cat: Optional['Cat']

However, when Pydantic validates instances of this class that do not have a cat specified, it returns the following error message for every field in Cat:

Click to Copy
field required (type=value_error.missing)

How do I make cat an optional field?

The Solution

The line cat: Optional['Cat'] declares a class attribute named cat with the type hint Optional['Cat']. Optional is a class from the Python typing module, used to indicate that a value can be of the specified type or it can be None. It can also be written as Cat | None.

While we’ve assigned a type hint to cat, we have not assigned it a default value. In older versions of Pydantic, attributes with a type hint including None were implicitly assigned a default value of None, but this was changed for version 2. Therefore, it is necessary to assign cat a default value of None to produce the expected behavior.

Click to Copy
class PetOwner: cat: Optional['Cat'] = None
  • Syntax.fmListen to the Syntax Podcast
  • Community SeriesIdentify, Trace, and Fix Endpoint Regression Issues
  • ResourcesBackend Error Monitoring 101
  • Syntax.fm logo
    Listen to the Syntax Podcast

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 100,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

© 2024 • Sentry is a registered Trademark of Functional Software, Inc.