Files
ormar/docs/api/models/helpers/validation.md

2.9 KiB

models.helpers.validation

check_if_field_has_choices

check_if_field_has_choices(field: Type[BaseField]) -> bool

Checks if given field has choices populated. A if it has one, a validator for this field needs to be attached.

Arguments:

  • field (BaseField): ormar field to check

Returns:

(bool): result of the check

convert_choices_if_needed

convert_choices_if_needed(field: Type["BaseField"], value: Any) -> Tuple[Any, List]

Converts dates to isoformat as fastapi can check this condition in routes and the fields are not yet parsed.

Converts enums to list of it's values.

Converts uuids to strings.

Converts decimal to float with given scale.

Arguments:

  • field (Type[BaseField]): ormar field to check with choices
  • values (Dict): current values of the model to verify

Returns:

(Tuple[Any, List]): value, choices list

validate_choices

validate_choices(field: Type["BaseField"], value: Any) -> None

Validates if given value is in provided choices.

Raises:

  • ValueError: If value is not in choices.

Arguments:

  • field (Type[BaseField]): field to validate
  • value (Any): value of the field

choices_validator

choices_validator(cls: Type["Model"], values: Dict[str, Any]) -> Dict[str, Any]

Validator that is attached to pydantic model pre root validators. Validator checks if field value is in field.choices list.

Raises:

  • ValueError: if field value is outside of allowed choices.

Arguments:

  • cls (Model class): constructed class
  • values (Dict[str, Any]): dictionary of field values (pydantic side)

Returns:

(Dict[str, Any]): values if pass validation, otherwise exception is raised

construct_modify_schema_function

construct_modify_schema_function(fields_with_choices: List) -> SchemaExtraCallable

Modifies the schema to include fields with choices validator. Those fields will be displayed in schema as Enum types with available choices values listed next to them.

Arguments:

  • fields_with_choices (List): list of fields with choices validation

Returns:

(Callable): callable that will be run by pydantic to modify the schema

populate_choices_validators

populate_choices_validators(model: Type["Model"]) -> None

Checks if Model has any fields with choices set. If yes it adds choices validation into pre root validators.

Arguments:

  • model (Model class): newly constructed Model