from pydantic import BaseModel, Field class CustomBaseModel(BaseModel): def dict(self, **kwargs): hidden_fields = set( attribute_name for attribute_name, model_field in self.__fields__.items() if model_field.field_info.extra.get("hidden") is True ) kwargs.setdefault("exclude", hidden_fields) return super().dict(**kwargs) class Book(CustomBaseModel): author: str title: str genre: str = Field(..., hidden=True) m = Book( author="Antoine de Saint-Exupéry", title="The Little Prince", genre="Novella", ) print(m.genre) # Novella print(m.dict()) # {'author': 'Antoine de Saint-Exupéry', 'title': 'The Little Prince'}