If field is provided ensure the value is valid.
(self, value)
| 521 | return value_dict |
| 522 | |
| 523 | def validate(self, value): |
| 524 | """If field is provided ensure the value is valid.""" |
| 525 | errors = {} |
| 526 | if self.field: |
| 527 | if hasattr(value, "items"): |
| 528 | sequence = value.items() |
| 529 | else: |
| 530 | sequence = enumerate(value) |
| 531 | for k, v in sequence: |
| 532 | try: |
| 533 | self.field._validate(v) |
| 534 | except ValidationError as error: |
| 535 | errors[k] = error.errors or error |
| 536 | except (ValueError, AssertionError) as error: |
| 537 | errors[k] = error |
| 538 | |
| 539 | if errors: |
| 540 | field_class = self.field.__class__.__name__ |
| 541 | self.error(f"Invalid {field_class} item ({value})", errors=errors) |
| 542 | # Don't allow empty values if required |
| 543 | if self.required and not value: |
| 544 | self.error("Field is required and cannot be empty") |
| 545 | |
| 546 | def prepare_query_value(self, op, value): |
| 547 | return self.to_mongo(value) |