(self, model: type[MODEL], field: str)
| 1583 | raise FieldError(f'Unknown field "{field}" for model "{self.model.__name__}"') |
| 1584 | |
| 1585 | def resolve_to_python_value(self, model: type[MODEL], field: str) -> Callable: |
| 1586 | if field in model._meta.fetch_fields: |
| 1587 | # return as is to get whole model objects |
| 1588 | return lambda x: x |
| 1589 | |
| 1590 | if field in (x[1] for x in model._meta.db_native_fields): |
| 1591 | return lambda x: x |
| 1592 | |
| 1593 | if field in self._annotations: |
| 1594 | annotation = self._annotations[field] |
| 1595 | field_object = getattr(annotation, "field_object", None) |
| 1596 | if field_object: |
| 1597 | return field_object.to_python_value |
| 1598 | return lambda x: x |
| 1599 | |
| 1600 | if field in model._meta.fields_map: |
| 1601 | return model._meta.fields_map[field].to_python_value |
| 1602 | |
| 1603 | field_, __, forwarded_fields = field.partition("__") |
| 1604 | if field_ in model._meta.fetch_fields: |
| 1605 | new_model = model._meta.fields_map[field_].related_model # type: ignore |
| 1606 | return self.resolve_to_python_value(new_model, forwarded_fields) |
| 1607 | |
| 1608 | raise FieldError(f'Unknown field "{field}" for model "{model}"') |
| 1609 | |
| 1610 | def _resolve_group_bys(self, *field_names: str) -> list: |
| 1611 | group_bys = [] |
no test coverage detected