mirror of
https://github.com/kennethreitz/pydantic.git
synced 2026-06-05 23:00:18 +00:00
ae34a6a733
* rename allow_population_by_alias -> allow_population_by_field_name, fix #585 * add change * tweak PR template ☣️ * tweak Makefile
101 lines
3.3 KiB
Markdown
101 lines
3.3 KiB
Markdown
Behaviour of pydantic can be controlled via the `Config` class on a model.
|
|
|
|
Options:
|
|
|
|
**`title`**
|
|
: title for the generated JSON Schema
|
|
|
|
**`anystr_strip_whitespace`**
|
|
: strip or not trailing and leading whitespace for str & byte types (default: `False`)
|
|
|
|
**`min_anystr_length`**
|
|
: min length for str & byte types (default: `0`)
|
|
|
|
**`max_anystr_length`**
|
|
: max length for str & byte types (default: `2 ** 16`)
|
|
|
|
**`validate_all`**
|
|
: whether or not to validate field defaults (default: `False`)
|
|
|
|
**`extra`**
|
|
: whether to ignore, allow or forbid extra attributes in model. Can use either string values of `ignore`,
|
|
`allow` or `forbid`, or use `Extra` enum (default is `Extra.ignore`)
|
|
|
|
**`allow_mutation`**
|
|
: whether or not models are faux-immutable, e.g. __setattr__ fails (default: `True`)
|
|
|
|
**`use_enum_values`**
|
|
: whether to populate models with the `value` property of enums,
|
|
rather than the raw enum - useful if you want to serialise `model.dict()` later (default: `False`)
|
|
|
|
**`fields`**
|
|
: schema information on each field, this is equivilant to
|
|
using [the schema](schema.md) class (default: `None`)
|
|
|
|
**`validate_assignment`**
|
|
: whether to perform validation on assignment to attributes or not (default: `False`)
|
|
|
|
**`allow_population_by_field_name`**
|
|
: whether or not an aliased field may be populated by its name as given by the model
|
|
attribute, as well as the alias (default: `False`)
|
|
|
|
!!! note
|
|
The name of this configuration setting was changed in **v1.0** from
|
|
`allow_population_by_alias` to `allow_population_by_field_name`.
|
|
|
|
**`error_msg_templates`**
|
|
: let's you to override default error message templates.
|
|
Pass in a dictionary with keys matching the error messages you want to override (default: `{}`)
|
|
|
|
**`arbitrary_types_allowed`**
|
|
: whether to allow arbitrary user types for fields (they are validated simply by checking if the
|
|
value is instance of that type). If `False` - `RuntimeError` will be raised on model declaration (default: `False`)
|
|
|
|
**`orm_mode`**
|
|
: allows usage of [ORM mode](models.md#orm-mode)
|
|
|
|
**`getter_dict`**
|
|
: custom class (should inherit from `GetterDict`) to use when decomposing ORM classes for validation,
|
|
use with `orm_mode`
|
|
|
|
**`alias_generator`**
|
|
: callable that takes field name and returns alias for it
|
|
|
|
**`keep_untouched`**
|
|
: tuple of types (e. g. descriptors) that won't change during model creation and won't be
|
|
included in the model schemas
|
|
|
|
**`schema_extra`**
|
|
: takes a `dict` to extend/update the generated JSON Schema
|
|
|
|
**`json_loads`**
|
|
: custom function for decoding JSON, see [custom JSON (de)serialisation](exporting_models.md#custom-json-deserialisation)
|
|
|
|
**`json_dumps`**
|
|
: custom function for encoding JSON, see [custom JSON (de)serialisation](exporting_models.md#custom-json-deserialisation)
|
|
|
|
**`json_encoders`**
|
|
: customise the way types are encoded to JSON, see [JSON Serialisation](exporting_models.md#modeljson)
|
|
|
|
```py
|
|
{!./examples/config.py!}
|
|
```
|
|
_(This script is complete, it should run "as is")_
|
|
|
|
Version for models based on `@dataclass` decorator:
|
|
|
|
```py
|
|
{!./examples/ex_dataclasses_config.py!}
|
|
```
|
|
_(This script is complete, it should run "as is")_
|
|
|
|
## Alias Generator
|
|
|
|
If data source field names do not match your code style (e. g. CamelCase fields),
|
|
you can automatically generate aliases using `alias_generator`:
|
|
|
|
```py
|
|
{!./examples/alias_generator_config.py!}
|
|
```
|
|
_(This script is complete, it should run "as is")_
|