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:

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:

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.

class PetOwner: cat: Optional['Cat'] = None

Loved by over 4 million developers and more than 90,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.

Share on Twitter
Bookmark this page
Ask a questionJoin the discussion

Related Answers

A better experience for your users. An easier life for your developers.

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