2.9 KiB
models.helpers.validation
check_if_field_has_choices
check_if_field_has_choices(field: 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: "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 (BaseField): ormar field to check with choicesvalues (Dict): current values of the model to verify
Returns:
(Tuple[Any, List]): value, choices list
validate_choices
validate_choices(field: "BaseField", value: Any) -> None
Validates if given value is in provided choices.
Raises:
ValueError: If value is not in choices.
Arguments:
field (BaseField): field to validatevalue (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 classvalues (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